@capxul/sdk 4.20.0-beta.27 → 4.20.0-beta.28

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.
@@ -1,4 +1,4 @@
1
- import { Cause, Clock, Context, Data, Deferred, Effect, Exit, Fiber, Layer, Option, Predicate, Queue, Ref, Result, Schema, SchemaGetter, SchemaParser } from "effect";
1
+ import { Cause, Clock, Context, Data, Deferred, Effect, Exit, Fiber, Layer, Option, Predicate, Queue, Ref, Result, Schema, SchemaGetter, SchemaIssue, SchemaParser } from "effect";
2
2
  import { makeFunctionReference } from "convex/server";
3
3
  import { bytesToHex, concat, decodeErrorResult, encodeAbiParameters, encodeFunctionData, encodePacked, formatUnits, getContractAddress, hashTypedData, isAddress, isHex, keccak256, pad, padHex, parseAbiParameters, recoverAddress, recoverTypedDataAddress, toBytes, toFunctionSignature, toHex } from "viem";
4
4
  import { getUserOperationHash } from "viem/account-abstraction";
@@ -858,7 +858,7 @@ const FIELD_RULES = {
858
858
  },
859
859
  anonymousId: {
860
860
  maxLength: 128,
861
- pattern: /^anon_[A-Za-z0-9-]+$/u
861
+ pattern: /^(?:anon_[A-Za-z0-9-]+|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/u
862
862
  },
863
863
  traceparent: {
864
864
  maxLength: 55,
@@ -5525,6 +5525,28 @@ const probes = {
5525
5525
  })
5526
5526
  };
5527
5527
  //#endregion
5528
+ //#region ../protocol/src/evm/role-dsl.ts
5529
+ const ORG_BUDGET_ACTIONS = [
5530
+ "send",
5531
+ "sendBatch",
5532
+ "createCommitment"
5533
+ ];
5534
+ /**
5535
+ * How a capped Budget's allowance refills (#2298). `monthly` refills the
5536
+ * allowance to its cap every 30 days. Roles v2 counts fixed periods from the
5537
+ * moment the allowance is set; it has no calendar month. Absent means `none`:
5538
+ * the cap is one pot that spending drains for good.
5539
+ */
5540
+ const ORG_BUDGET_REFILLS = ["monthly", "none"];
5541
+ /** The fixed Roles v2 refill period of a `monthly` Budget: 30 days, in seconds. */
5542
+ const MONTHLY_REFILL_PERIOD_SECONDS = 30n * 24n * 60n * 60n;
5543
+ /** Derive the Zodiac substrate key for one durable Permission identity. */
5544
+ function roleKeyForPermission(permissionId) {
5545
+ const normalized = permissionId.trim();
5546
+ if (normalized.length === 0 || normalized !== permissionId) throw Errors.invalidInput("permissionId", "must be a non-empty canonical Permission ID");
5547
+ return keccak256(toBytes(`permission ${permissionId}`));
5548
+ }
5549
+ //#endregion
5528
5550
  //#region ../protocol/src/permissions/permission-schema.ts
5529
5551
  /**
5530
5552
  * One stored `setAllowance` call inside a command's expected authority set.
@@ -5563,12 +5585,19 @@ const BudgetScopeSchema = Schema.Struct({
5563
5585
  })]),
5564
5586
  actions: Schema.NonEmptyArray(Schema.Literals(["pay", "commitments"]))
5565
5587
  }).pipe(Schema.refine((scope) => new Set(scope.actions).size === scope.actions.length && (scope.recipients.type === "anyone" || scope.recipients.accounts.length >= 1 && scope.recipients.accounts.length <= 32 && new Set(scope.recipients.accounts).size === scope.recipients.accounts.length), { message: "Budget scope requires unique actions and one to 32 unique allowed Accounts" }));
5588
+ /**
5589
+ * How a capped Budget refills (#2298): `monthly` tops the cap back up every 30
5590
+ * days (a fixed Roles v2 period, not a calendar month); `none` never refills.
5591
+ * Absent means `none`, and writers store only `monthly`.
5592
+ */
5593
+ const BudgetRefillSchema = Schema.Literals(ORG_BUDGET_REFILLS);
5566
5594
  /** The accepted product policy stored with one Permission revision. */
5567
5595
  const CurrentPolicySchema = Schema.Union([Schema.Struct({
5568
5596
  type: Schema.Literal("budget"),
5569
5597
  asset: AssetIdSchema,
5570
5598
  limit: Schema.NullOr(Schema.String),
5571
- scope: BudgetScopeSchema
5599
+ scope: BudgetScopeSchema,
5600
+ refill: Schema.optional(BudgetRefillSchema)
5572
5601
  }), Schema.Struct({ type: Schema.Literal("managePeople") })]);
5573
5602
  const BudgetIntentSchema = CurrentPolicySchema.pipe(Schema.refine((value) => {
5574
5603
  if (value.type !== "budget") return false;
@@ -5633,7 +5662,8 @@ const ResolvedPermissionBudgetPolicySchema = Schema.Struct({
5633
5662
  "send",
5634
5663
  "sendBatch",
5635
5664
  "createCommitment"
5636
- ]))
5665
+ ])),
5666
+ refill: Schema.optional(BudgetRefillSchema)
5637
5667
  });
5638
5668
  const PermissionRecipientBindingSchema = Schema.Struct({
5639
5669
  accountId: AccountIdSchema$1,
@@ -5645,16 +5675,22 @@ const StoredPermissionIntentSchema = Schema.Union([Schema.Struct({
5645
5675
  type: Schema.Literal("budget"),
5646
5676
  asset: AssetIdSchema,
5647
5677
  limit: Schema.NullOr(AssetAmountSchema),
5648
- scope: Schema.optional(BudgetScopeSchema)
5678
+ scope: Schema.optional(BudgetScopeSchema),
5679
+ refill: Schema.optional(BudgetRefillSchema)
5649
5680
  }).pipe(Schema.refine((intent) => intent.limit === null || intent.limit.asset === intent.asset, { message: "Budget limit must use the Budget asset" })), Schema.Struct({ type: Schema.Literal("managePeople") })]);
5650
5681
  /** Writes state every granted right and use a finite positive AssetAmount cap. */
5651
5682
  const PermissionIntentSchema = Schema.Union([Schema.Struct({
5652
5683
  type: Schema.Literal("budget"),
5653
5684
  asset: AssetIdSchema,
5654
5685
  limit: AssetAmountSchema,
5655
- scope: BudgetScopeSchema
5686
+ scope: BudgetScopeSchema,
5687
+ refill: Schema.optional(BudgetRefillSchema)
5656
5688
  }).pipe(Schema.refine((intent) => intent.limit.asset === intent.asset && /[1-9]/u.test(intent.limit.value), { message: "Budget cap must be positive and use the Budget asset" })), Schema.Struct({ type: Schema.Literal("managePeople") })]);
5657
- /** Decode once and give set-like scope fields one stable command representation. */
5689
+ /**
5690
+ * Decode once and give set-like scope fields one stable command representation.
5691
+ * An explicit `refill: "none"` is kept: on a change it turns a refill off,
5692
+ * where a missing `refill` keeps the Budget's current one (`keepRefillOnChange`).
5693
+ */
5658
5694
  function decodePermissionIntent(input) {
5659
5695
  const intent = Schema.decodeUnknownSync(PermissionIntentSchema, { onExcessProperty: "error" })(input);
5660
5696
  if (intent.type === "managePeople") return intent;
@@ -5669,6 +5705,19 @@ function decodePermissionIntent(input) {
5669
5705
  }
5670
5706
  });
5671
5707
  }
5708
+ /**
5709
+ * A Budget change that leaves `refill` out keeps the Budget's current refill:
5710
+ * a change never turns a refill off by omission. An explicit `"none"` turns it
5711
+ * off. The backend plans, the SDK verifies and the CLI confirms the same
5712
+ * result. A create has no current refill, so a missing one means `none`.
5713
+ */
5714
+ function keepRefillOnChange(intent, before) {
5715
+ if (intent.type !== "budget" || intent.refill !== void 0 || before?.type !== "budget" || before.refill !== "monthly") return intent;
5716
+ return {
5717
+ ...intent,
5718
+ refill: before.refill
5719
+ };
5720
+ }
5672
5721
  //#endregion
5673
5722
  //#region ../protocol/src/permissions/replacement-schema.ts
5674
5723
  const InvitationPhaseSchema = Schema.Literals([
@@ -5873,7 +5922,7 @@ const InviteGrantsSchema = Schema.Array(Schema.Union([
5873
5922
  Schema.Struct({
5874
5923
  type: Schema.Literal("new_budget"),
5875
5924
  label: Schema.String.pipe(Schema.refine((value) => value.trim().length >= 1 && value.trim().length <= 128)),
5876
- intent: BudgetIntentSchema
5925
+ intent: BudgetIntentSchema.pipe(Schema.refine((intent) => intent.refill !== "monthly", { message: "An invitation's new Budget cannot refill; change it once granted" }))
5877
5926
  })
5878
5927
  ])).pipe(Schema.refine((grants) => {
5879
5928
  if (grants.length < 1 || grants.length > 16) return false;
@@ -8964,7 +9013,9 @@ const PEOPLE_OPERATIONS = {
8964
9013
  emitSafeConfirmed: "accounts.safes.emitSafeConfirmed",
8965
9014
  readSafe: "accounts.safes.readSafe",
8966
9015
  recordDeployment: "accounts.safes.recordDeployment"
8967
- }
9016
+ },
9017
+ /** The home's requests to pay and Payments to retry, read in one query. */
9018
+ summaries: { loadNeedsYou: "accounts.summaries.loadNeedsYou" }
8968
9019
  },
8969
9020
  /** The host observer's names for `client.approvals.*`. */
8970
9021
  approvals: {
@@ -9223,7 +9274,9 @@ emitSaved: "activity.annotations.emitSaved" },
9223
9274
  pay: "organizationPayments.pay",
9224
9275
  payBatch: "organizationPayments.payBatch",
9225
9276
  prepareExecution: "organizationPayments.prepareExecution",
9226
- retry: "organizationPayments.retry"
9277
+ retry: "organizationPayments.retry",
9278
+ cancel: "organizationPayments.cancel",
9279
+ redirect: "organizationPayments.redirect"
9227
9280
  },
9228
9281
  /**
9229
9282
  * Payments' internal functions and the client's own method names; its public
@@ -9245,7 +9298,9 @@ emitSaved: "activity.annotations.emitSaved" },
9245
9298
  loadContext: "payments.commands.loadContext",
9246
9299
  loadExecutionContext: "payments.commands.loadExecutionContext",
9247
9300
  /** The capped Budget a prepared Organization command spends from, before its allowance is read on chain. */
9248
- loadBudgetAllowance: "payments.commands.loadBudgetAllowance"
9301
+ loadBudgetAllowance: "payments.commands.loadBudgetAllowance",
9302
+ /** What a new Payment command would spend and from which Safe, read before it is born. */
9303
+ loadBirthFunding: "payments.commands.loadBirthFunding"
9249
9304
  },
9250
9305
  lifecycles: { prepareIntent: "payments.lifecycles.prepareIntent" },
9251
9306
  /** The stored UserOperation of every money command: Payment, Permission and configuration. */
@@ -9604,6 +9659,13 @@ const OptionalReasonCode = Schema.optional(Schema.Literals(CAPXUL_ERROR_CODES));
9604
9659
  * no catalog schema validates it.
9605
9660
  */
9606
9661
  const EXCEPTION_EVENT_NAME = "$exception";
9662
+ /**
9663
+ * The SDK's twin of `capxul_backend_expected_outcome`: an expected outcome the
9664
+ * SDK's failure projection captures through the host's PostHog client. Like
9665
+ * the backend's, its properties are the error evidence, so no catalog schema
9666
+ * validates it.
9667
+ */
9668
+ const SDK_EXPECTED_OUTCOME_EVENT_NAME = "capxul_sdk_expected_outcome";
9607
9669
  const PII = Schema.String.pipe(Schema.brand("PII"));
9608
9670
  /**
9609
9671
  * The canonical envelope (ADR-0020 A4): snake_case ONLY. `capxul_env` and
@@ -9703,6 +9765,42 @@ const UiStepProps = {
9703
9765
  organization_id: OptionalOrgId,
9704
9766
  reason_code: OptionalReasonCode
9705
9767
  };
9768
+ /**
9769
+ * A journey's variants (`JOURNEYS`): the way a person came into a journey, or
9770
+ * the way they took through it. A variant is a property of the journey's step
9771
+ * events, never a journey of its own, so each journey funnel breaks down by
9772
+ * it. A step event takes only the variants that a journey contract names on
9773
+ * it, picked one by one; the analytics plan test checks both directions.
9774
+ * `pay_path` and `funding_source` have no carrier until their Phase 2 events.
9775
+ * `payment_*` events already carry `recipient_is_capxul_account`, and
9776
+ * `invoice_issued` carries `issuer_scope_kind`; neither is repeated here.
9777
+ */
9778
+ const JourneyVariantProps = {
9779
+ /** How a person came to Get started: by themselves, an invite, money that waited, or an invoice. */
9780
+ entry_path: Schema.optional(Schema.Literals([
9781
+ "signup",
9782
+ "invite",
9783
+ "claim",
9784
+ "invoice"
9785
+ ])),
9786
+ /** Where the person acted. `agent` is an AI agent driving the CLI. */
9787
+ surface: Schema.optional(Schema.Literals([
9788
+ "web",
9789
+ "cli",
9790
+ "agent"
9791
+ ])),
9792
+ /** Who pays: a person from their own account, or an Organization from a Budget. */
9793
+ payer_kind: Schema.optional(Schema.Literals(["person", "organization"])),
9794
+ /** How a request was paid: from the payer's inbox, or by its link at checkout. */
9795
+ pay_path: Schema.optional(Schema.Literals(["inbox", "link"])),
9796
+ /** Where an account's first money came from. `bank` is the planned on-ramp. */
9797
+ funding_source: Schema.optional(Schema.Literals([
9798
+ "deposit",
9799
+ "payment",
9800
+ "claim",
9801
+ "bank"
9802
+ ]))
9803
+ };
9706
9804
  //#endregion
9707
9805
  //#region ../observability/src/events/money.ts
9708
9806
  /**
@@ -9792,6 +9890,8 @@ const PaymentInitiatedProps = Schema.Struct({
9792
9890
  execution_id: OptionalString,
9793
9891
  payment_lifecycle_id: OptionalString,
9794
9892
  ...TelemetryEnvelopeProps,
9893
+ payer_kind: JourneyVariantProps.payer_kind,
9894
+ surface: JourneyVariantProps.surface,
9795
9895
  ...RecipientTelemetryProps,
9796
9896
  kind: Schema.String,
9797
9897
  payment_id: Schema.String
@@ -9807,6 +9907,8 @@ const PaymentLifecycleProps = {
9807
9907
  const PaymentSettledL2Props = Schema.Struct({
9808
9908
  ...PaymentLifecycleProps,
9809
9909
  ...TelemetryEnvelopeProps,
9910
+ payer_kind: JourneyVariantProps.payer_kind,
9911
+ surface: JourneyVariantProps.surface,
9810
9912
  ...RecipientTelemetryProps,
9811
9913
  kind: Schema.String,
9812
9914
  chain_id: Schema.Finite,
@@ -10014,6 +10116,7 @@ const OrganizationCreationStartedProps = Schema.Struct({
10014
10116
  });
10015
10117
  const OrganizationCreationReadyProps = Schema.Struct({
10016
10118
  ...TelemetryEnvelopeProps,
10119
+ surface: JourneyVariantProps.surface,
10017
10120
  $insert_id: Schema.String,
10018
10121
  organization_id: OrgIdTelemetrySchema,
10019
10122
  attempt_number: AttemptNumberSchema,
@@ -10038,45 +10141,6 @@ const OrganizationCreationFailedProps = Schema.Struct({
10038
10141
  ...ORGANIZATION_SETUP_REASONS
10039
10142
  ]))
10040
10143
  });
10041
- const OrgCreateStartedProps = Schema.Struct({
10042
- ...TelemetryEnvelopeProps,
10043
- org_id: OptionalOrgId,
10044
- email_domain: OptionalString,
10045
- template: OptionalString
10046
- });
10047
- const OrgSafeCreatedProps = Schema.Struct({
10048
- ...TelemetryEnvelopeProps,
10049
- org_id: OptionalOrgId,
10050
- chainId: OptionalChainId,
10051
- safe_address: OptionalAddress
10052
- });
10053
- const OrgSafeConfirmedProps = Schema.Struct({
10054
- ...TelemetryEnvelopeProps,
10055
- org_id: OptionalOrgId,
10056
- chainId: OptionalChainId,
10057
- safe_address: OptionalAddress,
10058
- durationMs: OptionalDurationMs
10059
- });
10060
- const OrgRolesSeededProps = Schema.Struct({
10061
- ...TelemetryEnvelopeProps,
10062
- org_id: OptionalOrgId,
10063
- chainId: OptionalChainId,
10064
- role: OptionalString,
10065
- txHash: OptionalTxHash
10066
- });
10067
- const OrgCreatedProps = Schema.Struct({
10068
- ...TelemetryEnvelopeProps,
10069
- org_id: OptionalOrgId,
10070
- chainId: OptionalChainId,
10071
- safe_address: OptionalAddress,
10072
- durationMs: OptionalDurationMs
10073
- });
10074
- const OrgCreateFailedProps = Schema.Struct({
10075
- ...TelemetryEnvelopeProps,
10076
- ...ChainCauseTelemetryProps,
10077
- org_id: OptionalOrgId,
10078
- reason: OptionalString
10079
- });
10080
10144
  const OrgInviteSentProps = Schema.Struct({
10081
10145
  ...TelemetryEnvelopeProps,
10082
10146
  org_id: OptionalOrgId,
@@ -10121,30 +10185,6 @@ Schema.Struct({
10121
10185
  name: Schema.Literal("organization_creation_failed"),
10122
10186
  props: OrganizationCreationFailedProps
10123
10187
  });
10124
- Schema.Struct({
10125
- name: Schema.Literal("org_create_started"),
10126
- props: OrgCreateStartedProps
10127
- });
10128
- Schema.Struct({
10129
- name: Schema.Literal("org_safe_created"),
10130
- props: OrgSafeCreatedProps
10131
- });
10132
- Schema.Struct({
10133
- name: Schema.Literal("org_safe_confirmed"),
10134
- props: OrgSafeConfirmedProps
10135
- });
10136
- Schema.Struct({
10137
- name: Schema.Literal("org_roles_seeded"),
10138
- props: OrgRolesSeededProps
10139
- });
10140
- Schema.Struct({
10141
- name: Schema.Literal("org_created"),
10142
- props: OrgCreatedProps
10143
- });
10144
- Schema.Struct({
10145
- name: Schema.Literal("org_create_failed"),
10146
- props: OrgCreateFailedProps
10147
- });
10148
10188
  Schema.Struct({
10149
10189
  name: Schema.Literal("org_invite_sent"),
10150
10190
  props: OrgInviteSentProps
@@ -11018,10 +11058,14 @@ const BootstrapFailedProps = Schema.Struct({
11018
11058
  });
11019
11059
  const MemberActivationStartedProps = Schema.Struct({
11020
11060
  ...TelemetryEnvelopeProps,
11061
+ entry_path: JourneyVariantProps.entry_path,
11062
+ surface: JourneyVariantProps.surface,
11021
11063
  $insert_id: Schema.String
11022
11064
  });
11023
11065
  const MemberActivationReadyProps = Schema.Struct({
11024
11066
  ...TelemetryEnvelopeProps,
11067
+ entry_path: JourneyVariantProps.entry_path,
11068
+ surface: JourneyVariantProps.surface,
11025
11069
  $insert_id: Schema.String,
11026
11070
  duration_ms: DurationMsSchema
11027
11071
  });
@@ -12567,7 +12611,7 @@ function mapAccountLifecycle(input) {
12567
12611
  }
12568
12612
  //#endregion
12569
12613
  //#region package.json
12570
- var version = "4.20.0-beta.27";
12614
+ var version = "4.20.0-beta.28";
12571
12615
  //#endregion
12572
12616
  //#region src/observability/telemetry/exception-projection.ts
12573
12617
  /** Fixed fallback for failures that have no safe message. */
@@ -13005,7 +13049,7 @@ const REVERT_SELECTOR_RE = /^0x(?:[0-9a-fA-F]{8})?$/u;
13005
13049
  //#region src/observability/posthog-failure.ts
13006
13050
  /** The expected-outcome codes, read as plain strings so a free-form kind can be looked up. */
13007
13051
  /** Stable PostHog event used for typed failures that are expected product outcomes. */
13008
- const CAPXUL_SDK_EXPECTED_OUTCOME_EVENT = "capxul_sdk_expected_outcome";
13052
+ const CAPXUL_SDK_EXPECTED_OUTCOME_EVENT = SDK_EXPECTED_OUTCOME_EVENT_NAME;
13009
13053
  /**
13010
13054
  * Adapt the host's already-initialized PostHog-like client. This function does
13011
13055
  * not import, initialize, configure, or own PostHog.
@@ -15688,6 +15732,12 @@ function paymentsV2Signature(name) {
15688
15732
  const SEND_SIGNATURE = paymentsV2Signature("send");
15689
15733
  const SEND_BATCH_SIGNATURE = paymentsV2Signature("sendBatch");
15690
15734
  const CREATE_COMMITMENT_SIGNATURE = paymentsV2Signature("createCommitment");
15735
+ /**
15736
+ * #2299 ruling C: only an Owner cancels or redirects an Organization-funded
15737
+ * commitment, so these two sit in the Owner role's scope, never a Budget's.
15738
+ * The contract admits only the commitment's creator, the Organization Safe.
15739
+ */
15740
+ const OWNER_COMMITMENT_SIGNATURES = [paymentsV2Signature("cancel"), paymentsV2Signature("redirect")];
15691
15741
  //#endregion
15692
15742
  //#region ../protocol/src/evm/organization-payments.ts
15693
15743
  /** Zodiac ModuleProxyFactory on Base Sepolia. */
@@ -15924,24 +15974,18 @@ function encodePreparedPaymentCallData(command) {
15924
15974
  }));
15925
15975
  }
15926
15976
  const [item] = command.items;
15927
- if (command.executionRoute.kind !== "direct" || command.items.length !== 1 || item === void 0 || isBirth(item)) throw Errors.invalidInput("items", "Commitment lifecycle requires one direct execution");
15928
- return safe4337ExecuteUserOpCallData({
15977
+ const route = command.executionRoute;
15978
+ if (command.items.length !== 1 || item === void 0 || isBirth(item) || route.kind !== "direct" && item.operation === "claim_commitment") throw Errors.invalidInput("items", "Commitment lifecycle requires one lone execution");
15979
+ const call = {
15929
15980
  to: command.contractAddress,
15981
+ value: 0n,
15930
15982
  data: lifecycleData(item)
15931
- });
15932
- }
15933
- //#endregion
15934
- //#region ../protocol/src/evm/role-dsl.ts
15935
- const ORG_BUDGET_ACTIONS = [
15936
- "send",
15937
- "sendBatch",
15938
- "createCommitment"
15939
- ];
15940
- /** Derive the Zodiac substrate key for one durable Permission identity. */
15941
- function roleKeyForPermission(permissionId) {
15942
- const normalized = permissionId.trim();
15943
- if (normalized.length === 0 || normalized !== permissionId) throw Errors.invalidInput("permissionId", "must be a non-empty canonical Permission ID");
15944
- return keccak256(toBytes(`permission ${permissionId}`));
15983
+ };
15984
+ return route.kind === "direct" ? safe4337ExecuteUserOpCallData(call) : buildOrgRoleSpendPersonalCallData(buildOrgRoleMultiCall({
15985
+ rolesModuleAddress: route.rolesModule,
15986
+ roleKey: route.roleKey,
15987
+ calls: [call]
15988
+ }));
15945
15989
  }
15946
15990
  //#endregion
15947
15991
  //#region src/payments/operation-verification.ts
@@ -15970,6 +16014,16 @@ function moneySafeOpDigest(operation, chainId) {
15970
16014
  userOp: safe4337UserOperation(operation)
15971
16015
  });
15972
16016
  }
16017
+ /**
16018
+ * An Organization-funded cancel or redirect runs through the Owner role
16019
+ * (#2299), which no Budget names. Its role key cannot widen what the signer
16020
+ * may do: the Roles module admits only a role the signer's Safe holds, and the
16021
+ * contract admits only the commitment's creator.
16022
+ */
16023
+ function isOwnerLifecycle(command) {
16024
+ const [item] = command.items;
16025
+ return command.items.length === 1 && (item?.operation === "cancel_commitment" || item?.operation === "redirect_commitment");
16026
+ }
15973
16027
  /** Verify every actual Money signing target against configured trust anchors. */
15974
16028
  function verifiesMoneyOperation(evidence, expectedSafe, chainId, permissionId) {
15975
16029
  try {
@@ -15980,7 +16034,7 @@ function verifiesMoneyOperation(evidence, expectedSafe, chainId, permissionId) {
15980
16034
  const route = command.executionRoute;
15981
16035
  if (route.kind === "direct") {
15982
16036
  if (permissionId !== void 0 || command.senderSafe.toLowerCase() !== expectedSafe.toLowerCase()) return false;
15983
- } else if (permissionId === void 0 || route.roleKey.toLowerCase() !== roleKeyForPermission(permissionId).toLowerCase() || command.senderSafe.toLowerCase() !== route.organizationSafe.toLowerCase()) return false;
16037
+ } else if ((permissionId === void 0 ? !isOwnerLifecycle(command) : route.roleKey.toLowerCase() !== roleKeyForPermission(permissionId).toLowerCase()) || command.senderSafe.toLowerCase() !== route.organizationSafe.toLowerCase()) return false;
15984
16038
  if (operation.callData.toLowerCase() !== encodePreparedPaymentCallData(command).toLowerCase()) return false;
15985
16039
  const digest = moneySafeOpDigest(operation, chainId);
15986
16040
  return evidence.digest.toLowerCase() === digest.toLowerCase() && evidence.executionId === `money_execution_${digest.slice(2).toLowerCase()}`;
@@ -16770,9 +16824,11 @@ function subscribeFreshQuery(deps, args, listener, operation, projection, option
16770
16824
  //#region src/payments/lifecycle-execution.ts
16771
16825
  /**
16772
16826
  * The prepared command is this lifecycle intent; a retry also names the
16773
- * original birth command of the scope it was asked for.
16827
+ * original birth command of the scope it was asked for. A claim, and an
16828
+ * Account's own cancel or redirect, runs directly from the signer's Safe; an
16829
+ * Organization's cancel or redirect runs through its Owner role (#2299).
16774
16830
  */
16775
- const lifecycleCommandCheck = (intent, expectedOrganizationId) => async (request, evidence) => await matchesIntent(intent)(request, evidence) && (intent.kind !== "retry" || (expectedOrganizationId === void 0 ? evidence.sourceCommand?.kind === "birth" && evidence.sourceCommand.actor.kind === "account" : evidence.sourceCommand?.kind === "birth" && evidence.sourceCommand.actor.kind === "organization" && evidence.sourceCommand.actor.orgId === expectedOrganizationId));
16831
+ const lifecycleCommandCheck = (intent, expectedOrganizationId) => async (request, evidence) => await matchesIntent(intent)(request, evidence) && (intent.kind === "retry" ? expectedOrganizationId === void 0 ? evidence.sourceCommand?.kind === "birth" && evidence.sourceCommand.actor.kind === "account" : evidence.sourceCommand?.kind === "birth" && evidence.sourceCommand.actor.kind === "organization" && evidence.sourceCommand.actor.orgId === expectedOrganizationId : evidence.preparedCommand?.executionRoute.kind === (intent.kind === "claim" || expectedOrganizationId === void 0 ? "direct" : "zodiac_role"));
16776
16832
  /** The prepared command pays exactly the request the payer confirmed. */
16777
16833
  const requestPaymentCheck = (confirmation) => async (request) => "kind" in request && request.kind === "payment_request" && canonicalJson(request.confirmation) === canonicalJson(confirmation);
16778
16834
  function executePaymentLifecycle(deps, intent, signal, controls, expectedOrganizationId, onPrepared) {
@@ -17693,17 +17749,21 @@ function paymentExecutionIntent(input) {
17693
17749
  const to = normalizeTargetForBackend(input.to, "to");
17694
17750
  if (!to.ok) return to;
17695
17751
  try {
17696
- return {
17752
+ const decoded = Schema.decodeResult(PaymentExecutionIntentSchema, { onExcessProperty: "error" })({
17753
+ to: to.value,
17754
+ amount: input.amount,
17755
+ ...input.externalAddressAcknowledged === void 0 ? {} : { externalAddressAcknowledged: input.externalAddressAcknowledged },
17756
+ ...input.paymentType === void 0 ? {} : { paymentType: input.paymentType },
17757
+ ...input.document === void 0 ? {} : { document: input.document },
17758
+ ...input.supportingReceipts === void 0 ? {} : { supportingReceipts: input.supportingReceipts },
17759
+ ...input.timing === void 0 ? {} : { timing: input.timing }
17760
+ });
17761
+ return Result.isSuccess(decoded) ? {
17697
17762
  ok: true,
17698
- value: Schema.decodeSync(PaymentExecutionIntentSchema, { onExcessProperty: "error" })({
17699
- to: to.value,
17700
- amount: input.amount,
17701
- ...input.externalAddressAcknowledged === void 0 ? {} : { externalAddressAcknowledged: input.externalAddressAcknowledged },
17702
- ...input.paymentType === void 0 ? {} : { paymentType: input.paymentType },
17703
- ...input.document === void 0 ? {} : { document: input.document },
17704
- ...input.supportingReceipts === void 0 ? {} : { supportingReceipts: input.supportingReceipts },
17705
- ...input.timing === void 0 ? {} : { timing: input.timing }
17706
- })
17763
+ value: decoded.success
17764
+ } : {
17765
+ ok: false,
17766
+ error: invalidPaymentField(decoded.failure.issue)
17707
17767
  };
17708
17768
  } catch {
17709
17769
  return {
@@ -17712,6 +17772,13 @@ function paymentExecutionIntent(input) {
17712
17772
  };
17713
17773
  }
17714
17774
  }
17775
+ const formatIssue = SchemaIssue.makeFormatterStandardSchemaV1();
17776
+ /** The first failing field and why, e.g. `amount.value`, as the backend's row decode names it (#2381). */
17777
+ function invalidPaymentField(issue) {
17778
+ const first = formatIssue(issue).issues[0];
17779
+ const field = first?.path?.map((segment) => String(typeof segment === "object" ? segment.key : segment)).join(".");
17780
+ return Errors.invalidInput(field === void 0 || field.length === 0 ? "payment" : field, first?.message ?? "invalid personal payment input");
17781
+ }
17715
17782
  function normalizePaymentTiming(payment) {
17716
17783
  const { release: _release, ...rest } = payment;
17717
17784
  return {
@@ -18528,6 +18595,27 @@ function makeOrganizationPaymentsMethods(deps, orgId) {
18528
18595
  flights: /* @__PURE__ */ new Map()
18529
18596
  };
18530
18597
  const execute = (input, signal, operation = "organization-pay-batch", controls, onPrepared) => executeOrganizationBatch(scope, input, signal, operation, controls, onPrepared);
18598
+ /** One Owner-signed cancel or redirect, answering the one Payment it acted on (#2299). */
18599
+ const ownerLifecycle = (intent, controls, operation) => runCapxulEffect(Effect.gen(function* () {
18600
+ const captured = carryInvocationParentSpan(controls, yield* Effect.currentSpan.pipe(Effect.orDie));
18601
+ return yield* awaitCapxulResult(async () => {
18602
+ const execution = executionDependencies$1(deps);
18603
+ if (execution === null) return {
18604
+ ok: false,
18605
+ error: Errors.notImplemented("organizationPayments", "executionComposition")
18606
+ };
18607
+ const result = await executePaymentLifecycle(execution, intent, controls?.signal, captured, orgId);
18608
+ if (!result.ok) return result;
18609
+ const [payment, ...rest] = result.value.payments;
18610
+ return payment === void 0 || rest.length !== 0 ? {
18611
+ ok: false,
18612
+ error: Errors.unknown()
18613
+ } : {
18614
+ ok: true,
18615
+ value: normalizePaymentTiming(payment)
18616
+ };
18617
+ });
18618
+ }), observationOnlyControls(controls), operation, deps.runPromise);
18531
18619
  return {
18532
18620
  ...makeOrganizationPaymentReadMethods(deps, orgId),
18533
18621
  retry: (paymentId, options) => {
@@ -18586,6 +18674,19 @@ function makeOrganizationPaymentsMethods(deps, orgId) {
18586
18674
  });
18587
18675
  }), observationOnlyControls(controls), CAPXUL_OPERATIONS.organizationPayments.pay, deps.runPromise);
18588
18676
  },
18677
+ cancel: (paymentId, options) => ownerLifecycle({
18678
+ kind: "cancel",
18679
+ paymentId
18680
+ }, deps.invocationControls?.(options) ?? options, CAPXUL_OPERATIONS.organizationPayments.cancel),
18681
+ redirect: (input, options) => {
18682
+ const controls = deps.invocationControls?.(options) ?? options;
18683
+ const recipient = normalizeTargetForBackend(input.to, "to");
18684
+ return recipient.ok ? ownerLifecycle({
18685
+ kind: "redirect",
18686
+ paymentId: input.paymentId,
18687
+ recipient: recipient.value
18688
+ }, controls, CAPXUL_OPERATIONS.organizationPayments.redirect) : runCapxulEffect(Effect.fail(recipient.error), observationOnlyControls(controls), CAPXUL_OPERATIONS.organizationPayments.redirect, deps.runPromise);
18689
+ },
18589
18690
  payBatch: (input, options) => {
18590
18691
  const controls = deps.invocationControls?.(options) ?? options;
18591
18692
  return runCapxulEffect(Effect.gen(function* () {
@@ -22946,4 +23047,4 @@ function executeIdentityProductObservation(telemetry, record, state) {
22946
23047
  return ignoreTransportFailure(() => invocationTelemetry.emit(mapped), "emit", mapped.name).pipe(Effect.andThen(ignoreTransportFailure(after, mapped.name === "auth_signed_out" ? "reset" : "identify", mapped.name)));
22947
23048
  }
22948
23049
  //#endregion
22949
- export { parseAssetAmount as $, InvitationViewSchema as $n, SystemClockLayer as $r, version as $t, registerProductTelemetryInvocation as A, toJwtToken as Ai, details as An, toWeiAmount as Ar, safe4337ExecuteUserOpCallData as At, makeOrganizationPaymentsMethods as B, AuthCachePortTag as Bi, FixedOfferDraftSchema as Bn, runCapxulEffect as Br, failureEvidenceProps as Bt, AccountReadPortTag as C, parseAuthSession as Ci, CLI_INVOCATION_KINDS as Cn, toAssetId as Cr, SEND_BATCH_SIGNATURE as Ct, convexCallErrorFromCapxul as D, toEpochSeconds as Di, isCapxulOperation as Dn, isEvmAddress as Dr, TOKENS as Dt, ConvexCallPortTag as E, toEpochMs as Ei, CAPXUL_OPERATIONS as En, EVM_ADDRESS_RE$1 as Er, CONFIGURED_MONEY_ASSETS as Et, decodePayrollRunInput as F, FAILURE_MODES$1 as Fi, replacements as Fn, publicIdentityFailure as Fr, SAFE_SENTINEL_OWNERS as Ft, makeActorRelationshipMethods as G, treasuries as Gn, toCapxulResult as Gr, observationContextProps as Gt, makePaymentsMethods as H, members as Hn, awaitCapxulResult as Hr, postHogFailureObservation as Ht, toPayrollGroupId as I, isFailureMode as Ii, PreparedPermissionExecutionSchema as In, runIdentityFacade as Ir, callOperation as It, makeTargetsMethods as J, ORGANIZATION_SETUP_REASONS as Jn, EXPECTED_OPERATION_OUTCOMES as Jr, SDK_VERSION as Jt, makeCheckoutMethods as K, workspaces as Kn, formatTraceparent as Kr, withCapturedAttemptContext as Kt, makeAccountMethods as L, isRecord as Li, PermissionCommandViewSchema as Ln, runPortEffect as Lr, asCapxulError as Lt, makeApprovalsMethods as M, Errors as Mi, authorities as Mn, reference as Mr, buildSafeMultiSendExecTransactionCall as Mt, makePayrollMethods as N, CapxulError as Ni, commands as Nn, makeAuthMethods as Nr, BASE_SEPOLIA_CHAIN_ID as Nt, retryIdempotentRead as O, toAuthUserId as Oi, normalizeCapxulOperation as On, toAddress as Or, deriveCapxulSafeAddress as Ot, makeUnavailablePayrollMethods as P, isCapxulError as Pi, configurations as Pn, askIdentity as Pr, MULTI_SEND_CALL_ONLY as Pt, formatAssetAmount as Q, toOrgId as Qn, oauthBearerAuthClient as Qr, safeExceptionLabel as Qt, emitDepositInitiated as R, readField as Ri, PayrollGroupIdSchema as Rn, sessionFromActor as Rr, toPublicError$1 as Rt, valueIn as S, BrowserAuthCacheAdapter as Si, CLI_COMMAND_NAMES as Sn, currencySymbolFor as Sr, SAFE_ENABLE_MODULE_ABI as St, TelemetryPortTag as T, toDurationMs as Ti, stampTelemetryEnvelope as Tn, toExactAssetAmount as Tr, CAPXUL_PAYMENTS_V2_ADDRESS as Tt, waitForPaymentSubmission as U, roles as Un, defectAsCapxulError as Ur, observeFailedResult as Ut, makeOfframpMethods as V, invitations as Vn, withVerifiedOrganizationScope as Vr, CAPXUL_SDK_EXPECTED_OUTCOME_EVENT as Vt, makeDestinationsMethods as W, setups as Wn, runIfActive as Wr, observeSdkClient as Wt, assetAmountFromRaw as X, CHAIN_UPSTREAMS as Xn, carryInvocationParentSpan as Xr, normalizeExceptionOperation as Xt, subscribeFreshQuery as Y, ORGANIZATION_SETUP_STATUSES as Yn, ActorFailure as Yr, normalizeExceptionErrorKind as Yt, assetSymbolFor as Z, decodeChainCause as Zn, withInvocationParentSpan as Zr, projectSdkException as Zt, accountFromAccountPositions as _, AuthClientError as _i, toPartyId as _n, toBudgetId as _r, ROLES_EXEC_TRANSACTION_WITH_ROLE_ABI as _t, paymentPhase as a, observationRequestHeaders as ai, isSignerNotReadySignal as an, images as ar, fingerprintPaymentIntent as at, MONEY_READ_RATES as b, globalLocalStorage as bi, redactTelemetryProps as bn, toRoleKey as br, ROLES_SET_UP_ABI as bt, makePaymentDocumentsMethods as c, readInvocationObservation as ci, signerFailure as cn, isBytes32 as cr, roleKeyForPermission as ct, SmartAccountPortTag as d, redactUrlSecrets as di, makeClientRequestMethods as dn, toLowerBytes32 as dr, CREATE_COMMITMENT_SIGNATURE as dt, ClockError as ei, isSettingUpLifecycle as en, hashPermissionReplacementPreview as er, requireAsset as et, smartAccountErrorFromCapxul as f, isCredentialField as fi, toCountryCode as fn, toLowerHex as fr, MODULE_PROXY_FACTORY_ABI as ft, ConvexAccountLayer as g, authClientPortFromPromiseAdapter as gi, toHandle as gn, EpochMsSchema$1 as gr, ROLES_ASSIGN_ROLES_ABI as gt, makeAccountsMethods as h, toPublishableKey as hi, HANDLE_RE as hn, DurationMsSchema$1 as hr, PARAMETER_TYPE as ht, inboxPhase as i, BetterAuthBrowserLayer as ii, isEcdsaSignatureHex as in, AppIdSchema$1 as ir, canonicalJson as it, wireChainId as j, toSessionToken as ji, onboardings as jn, absurd as jr, safe4337MultiSendUserOpCallData as jt, bindProductTelemetryInvocation as k, toEmail as ki, OPERATIONS as kn, toChainId as kr, normalizeSafeSaltEmail as kt, makeSmartAccountMethods as l, sanitizeObservationContext as li, resolveFailureMode as ln, toExactHex as lr, ZODIAC_MODULE_PROXY_FACTORY as lt, PonderIndexerAdapter as m, toAppId as mi, toTesterKind as mn, PAYMENT_STATUSES as mr, OPERATOR as mt, bootIdentityFlow as n, readClockNow as ni, causeChain as nn, CurrentPolicySchema as nr, isMoneyParseError as nt, requestPhase as o, attachInvocationObservation as oi, openfortSignerNotReadyCode as on, toAccountId as or, moneySafeOpDigest as ot, makeHoldingsMethods as p, toAllowedOrigin as pi, toKycTier as pn, PAYMENT_DIRECTIONS as pr, MULTI_SEND_SELECTOR as pt, isCheckoutSettlementConsumed as q, OrganizationSetupSchema as qn, CAPXUL_ERROR_CODES as qr, EXCEPTION_MESSAGE as qt, makeMeMethods as r, BetterAuthNodeLayer as ri, injectedWalletSigner as rn, diagnostics as rr, parseMoney as rt, makeActivityMethods as s, copyInvocationObservation as si, recoverRawDigestSigner as sn, PaymentDocumentOptionsSchema as sr, ORG_BUDGET_ACTIONS as st, executeIdentityProductObservation as t, ClockPortTag as ti, UNOBSERVABLE_SIGNER_STATUS as tn, decodePermissionIntent as tr, toRaw as tt, ConvexSmartAccountLayer as u, redactSecrets as ui, makeCurrentUserMethods as un, toLowerAddress as ur, resolveOrgPermissionIdentity as ut, accountPositionsFromWire as v, AuthClientPortTag as vi, validateHandle as vn, toPermissionAssignmentId as vr, ROLES_SET_ALLOWANCE_ABI as vt, accountReadErrorFromCapxul as w, parseCachedJwt as wi, EXCEPTION_EVENT_NAME as wn, toCurrencyCode as wr, SEND_SIGNATURE as wt, valueActivitySummary as x, InMemoryAuthCacheAdapter as xi, CLI_CAPABILITIES as xn, ChainIdSchema$1 as xr, ROLE_MANAGEMENT_SIGNATURES as xt, positionPeg as y, detectAuthCacheAdapter as yi, redactTelemetryEvent as yn, toPermissionId as yr, ROLES_SET_TRANSACTION_UNWRAPPER_ABI as yt, logDroppedEvent as z, AuthCacheError as zi, PayrollGroupInputSchema as zn, observationOnlyControls as zr, failureDetail as zt };
23050
+ export { parseAssetAmount as $, hashPermissionReplacementPreview as $n, carryInvocationParentSpan as $r, isSettingUpLifecycle as $t, registerProductTelemetryInvocation as A, toEpochSeconds as Ai, onboardings as An, isEvmAddress as Ar, safe4337MultiSendUserOpCallData as At, makeOrganizationPaymentsMethods as B, isRecord as Bi, invitations as Bn, runPortEffect as Br, CAPXUL_SDK_EXPECTED_OUTCOME_EVENT as Bt, AccountReadPortTag as C, globalLocalStorage as Ci, EXCEPTION_EVENT_NAME as Cn, toRoleKey as Cr, SEND_SIGNATURE as Ct, convexCallErrorFromCapxul as D, parseCachedJwt as Di, normalizeCapxulOperation as Dn, toCurrencyCode as Dr, deriveCapxulSafeAddress as Dt, ConvexCallPortTag as E, parseAuthSession as Ei, isCapxulOperation as En, toAssetId as Er, TOKENS as Et, decodePayrollRunInput as F, Errors as Fi, PreparedPermissionExecutionSchema as Fn, reference as Fr, callOperation as Ft, makeActorRelationshipMethods as G, workspaces as Gn, awaitCapxulResult as Gr, withCapturedAttemptContext as Gt, makePaymentsMethods as H, AuthCacheError as Hi, roles as Hn, observationOnlyControls as Hr, observeFailedResult as Ht, toPayrollGroupId as I, CapxulError as Ii, PermissionCommandViewSchema as In, makeAuthMethods as Ir, asCapxulError as It, makeTargetsMethods as J, ORGANIZATION_SETUP_STATUSES as Jn, toCapxulResult as Jr, normalizeExceptionErrorKind as Jt, makeCheckoutMethods as K, OrganizationSetupSchema as Kn, defectAsCapxulError as Kr, EXCEPTION_MESSAGE as Kt, makeAccountMethods as L, isCapxulError as Li, PayrollGroupIdSchema as Ln, askIdentity as Lr, toPublicError$1 as Lt, makeApprovalsMethods as M, toEmail as Mi, commands as Mn, toChainId as Mr, BASE_SEPOLIA_CHAIN_ID as Mt, makePayrollMethods as N, toJwtToken as Ni, configurations as Nn, toWeiAmount as Nr, MULTI_SEND_CALL_ONLY as Nt, retryIdempotentRead as O, toDurationMs as Oi, OPERATIONS as On, toExactAssetAmount as Or, normalizeSafeSaltEmail as Ot, makeUnavailablePayrollMethods as P, toSessionToken as Pi, replacements as Pn, absurd as Pr, SAFE_SENTINEL_OWNERS as Pt, formatAssetAmount as Q, InvitationViewSchema as Qn, ActorFailure as Qr, version as Qt, emitDepositInitiated as R, FAILURE_MODES$1 as Ri, PayrollGroupInputSchema as Rn, publicIdentityFailure as Rr, failureDetail as Rt, valueIn as S, detectAuthCacheAdapter as Si, CLI_INVOCATION_KINDS as Sn, toPermissionId as Sr, SEND_BATCH_SIGNATURE as St, TelemetryPortTag as T, BrowserAuthCacheAdapter as Ti, CAPXUL_OPERATIONS as Tn, currencySymbolFor as Tr, CONFIGURED_MONEY_ASSETS as Tt, waitForPaymentSubmission as U, AuthCachePortTag as Ui, setups as Un, runCapxulEffect as Ur, observeSdkClient as Ut, makeOfframpMethods as V, readField as Vi, members as Vn, sessionFromActor as Vr, postHogFailureObservation as Vt, makeDestinationsMethods as W, treasuries as Wn, withVerifiedOrganizationScope as Wr, observationContextProps as Wt, assetAmountFromRaw as X, decodeChainCause as Xn, CAPXUL_ERROR_CODES as Xr, projectSdkException as Xt, subscribeFreshQuery as Y, CHAIN_UPSTREAMS as Yn, formatTraceparent as Yr, normalizeExceptionOperation as Yt, assetSymbolFor as Z, toOrgId as Zn, EXPECTED_OPERATION_OUTCOMES as Zr, safeExceptionLabel as Zt, accountFromAccountPositions as _, toAppId as _i, validateHandle as _n, PAYMENT_STATUSES as _r, ROLES_SET_ALLOWANCE_ABI as _t, paymentPhase as a, readClockNow as ai, openfortSignerNotReadyCode as an, roleKeyForPermission as ar, fingerprintPaymentIntent as at, MONEY_READ_RATES as b, AuthClientError as bi, CLI_CAPABILITIES as bn, toBudgetId as br, ROLE_MANAGEMENT_SIGNATURES as bt, makePaymentDocumentsMethods as c, observationRequestHeaders as ci, resolveFailureMode as cn, images as cr, resolveOrgPermissionIdentity as ct, SmartAccountPortTag as d, readInvocationObservation as di, toCountryCode as dn, isBytes32 as dr, MULTI_SEND_SELECTOR as dt, withInvocationParentSpan as ei, UNOBSERVABLE_SIGNER_STATUS as en, decodePermissionIntent as er, requireAsset as et, smartAccountErrorFromCapxul as f, sanitizeObservationContext as fi, toKycTier as fn, toExactHex as fr, OPERATOR as ft, ConvexAccountLayer as g, toAllowedOrigin as gi, toPartyId as gn, PAYMENT_DIRECTIONS as gr, ROLES_EXEC_TRANSACTION_WITH_ROLE_ABI as gt, makeAccountsMethods as h, isCredentialField as hi, toHandle as hn, toLowerHex as hr, ROLES_ASSIGN_ROLES_ABI as ht, inboxPhase as i, ClockPortTag as ii, isSignerNotReadySignal as in, ORG_BUDGET_ACTIONS as ir, canonicalJson as it, wireChainId as j, toAuthUserId as ji, authorities as jn, toAddress as jr, buildSafeMultiSendExecTransactionCall as jt, bindProductTelemetryInvocation as k, toEpochMs as ki, details as kn, EVM_ADDRESS_RE$1 as kr, safe4337ExecuteUserOpCallData as kt, makeSmartAccountMethods as l, attachInvocationObservation as li, makeCurrentUserMethods as ln, toAccountId as lr, CREATE_COMMITMENT_SIGNATURE as lt, PonderIndexerAdapter as m, redactUrlSecrets as mi, HANDLE_RE as mn, toLowerBytes32 as mr, PARAMETER_TYPE as mt, bootIdentityFlow as n, SystemClockLayer as ni, injectedWalletSigner as nn, CurrentPolicySchema as nr, isMoneyParseError as nt, requestPhase as o, BetterAuthNodeLayer as oi, recoverRawDigestSigner as on, diagnostics as or, moneySafeOpDigest as ot, makeHoldingsMethods as p, redactSecrets as pi, toTesterKind as pn, toLowerAddress as pr, OWNER_COMMITMENT_SIGNATURES as pt, isCheckoutSettlementConsumed as q, ORGANIZATION_SETUP_REASONS as qn, runIfActive as qr, SDK_VERSION as qt, makeMeMethods as r, ClockError as ri, isEcdsaSignatureHex as rn, MONTHLY_REFILL_PERIOD_SECONDS as rr, parseMoney as rt, makeActivityMethods as s, BetterAuthBrowserLayer as si, signerFailure as sn, AppIdSchema$1 as sr, ZODIAC_MODULE_PROXY_FACTORY as st, executeIdentityProductObservation as t, oauthBearerAuthClient as ti, causeChain as tn, keepRefillOnChange as tr, toRaw as tt, ConvexSmartAccountLayer as u, copyInvocationObservation as ui, makeClientRequestMethods as un, PaymentDocumentOptionsSchema as ur, MODULE_PROXY_FACTORY_ABI as ut, accountPositionsFromWire as v, toPublishableKey as vi, redactTelemetryEvent as vn, DurationMsSchema$1 as vr, ROLES_SET_TRANSACTION_UNWRAPPER_ABI as vt, accountReadErrorFromCapxul as w, InMemoryAuthCacheAdapter as wi, stampTelemetryEnvelope as wn, ChainIdSchema$1 as wr, CAPXUL_PAYMENTS_V2_ADDRESS as wt, valueActivitySummary as x, AuthClientPortTag as xi, CLI_COMMAND_NAMES as xn, toPermissionAssignmentId as xr, SAFE_ENABLE_MODULE_ABI as xt, positionPeg as y, authClientPortFromPromiseAdapter as yi, redactTelemetryProps as yn, EpochMsSchema$1 as yr, ROLES_SET_UP_ABI as yt, logDroppedEvent as z, isFailureMode as zi, FixedOfferDraftSchema as zn, runIdentityFacade as zr, failureEvidenceProps as zt };