@capxul/sdk-react 4.20.0-beta.2 → 4.20.0-beta.20

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.
package/README.md CHANGED
@@ -27,13 +27,13 @@ export function Providers({ children }: { children: React.ReactNode }) {
27
27
  - The provider restores Account readiness after a complete authenticated
28
28
  session. Account and Organization readiness transitions refresh active
29
29
  authenticated queries.
30
- - `CapxulAuthenticationController` and `CapxulOnboardingController` select
31
- app-owned slots and render no SDK-owned DOM. The onboarding controller keeps
32
- no Organization submission: after a reload the Core SDK reads the pending
33
- Organization from the backend and attaches it, so the app re-submits nothing.
34
- A claimed identity with no Organization and no app-held form step reports
35
- `organizationProgress` with `{ at: "loading", orgId: null }` until that
36
- attach lands.
30
+ - CapxulAuthenticationController and CapxulOnboardingController select
31
+ app-owned slots and render no SDK-owned DOM. Organization create begins a
32
+ backend setup and returns its exact ID. The Core SDK actor subscribes to
33
+ that setup. Awaiting authorization, attention, and failure reach actionable
34
+ slots; processing and rechecking reach a finite progress slot.
35
+ - CapxulDashboardAccess combines current setup with current org.me authority.
36
+ A historical ready setup does not grant access after authority is revoked.
37
37
  - Rich-data hooks such as `useCapxulProfile`, `useCapxulOrgs`, members, roles,
38
38
  treasury, and money hooks remain TanStack Query projections. Personal
39
39
  holdings and activity reads start only after the Account is claimed.
@@ -56,6 +56,8 @@ export function Providers({ children }: { children: React.ReactNode }) {
56
56
  engine hook stays module-scoped. Both actor paths ship: a personal actor omits
57
57
  `.Source` and spends the personal Account; an organization actor holds the
58
58
  Budget the payment is drawn from and spends the treasury Account.
59
+ The submitted amount uses the selected registry AssetId and precision. This
60
+ includes 18-decimal WETH.
59
61
  - `CapxulContacts` is the compound address-book component. One root owns the
60
62
  book behaviour and draws nothing. The `.Summary`, `.List`, and `.Add` region
61
63
  parts each hand the screen one finished slice, and a `.List` row carries its
@@ -75,6 +77,9 @@ export function Providers({ children }: { children: React.ReactNode }) {
75
77
  and an amount the caller passed in `prefill` wins over it. Both engine hooks
76
78
  stay module-scoped.
77
79
 
80
+ Activity groups use AssetId. The SDK resolves symbols and precision only for
81
+ display and CSV output. Assets with the same peg remain separate.
82
+
78
83
  Payroll confirmation restores a saved run before enabling submission. An
79
84
  uncertain run keeps its period, amounts, recipients, and SDK request key across
80
85
  close/reopen and reload. Its fields remain fixed until Core confirms success or terminal closure.
@@ -98,6 +103,16 @@ The testing harness uses the real public provider and controllers and imports
98
103
  its client factory only through `@capxul/sdk/testing`; it owns no renderer or
99
104
  parallel identity state.
100
105
 
106
+ ## Activity documents
107
+
108
+ `CapxulActivity.Detail` exposes `documents`, `selectedDocument`, and
109
+ `selectDocument({ documentHash, contentHash })`. Selection defaults to the
110
+ instruction, then the Movement Memo. `renderDocument()` returns safe semantic
111
+ HTML. `downloadDocument()` returns exact bytes for a deliberate download.
112
+ The host owns the panel and download action. Do not log these results.
113
+ Account or Organization changes clear selection and cancel pending reads.
114
+ These methods replace the receipt-only selector and action.
115
+
101
116
  ## Documentation
102
117
 
103
118
  - [Maintainer context](./CONTEXT.md)
@@ -106,14 +106,8 @@ type AccountProgress = Exclude<Readiness, {
106
106
  type AccountFailure = Extract<Readiness, {
107
107
  at: "failed";
108
108
  }>;
109
- type OrgProgress = Exclude<OrgLane, {
110
- at: "failed";
111
- } | {
112
- at: "ready";
113
- }>;
114
- type OrgFailure = Extract<OrgLane, {
115
- at: "failed";
116
- }>;
109
+ type OrgProgress = OrgLane;
110
+ type OrgFailure = OrgLane;
117
111
  type ReadyDestination = Extract<IdentityDestination, {
118
112
  to: "dashboardPersonal" | "dashboardOrganization";
119
113
  }>;
@@ -228,7 +228,7 @@ async function guarded(runtime, verb, options, run) {
228
228
  }
229
229
  }
230
230
  function organizationFailure(reason, state) {
231
- const stateFailure = state.phase === "faulted" ? state.failure : state.phase === "authenticated" && state.account.at === "failed" ? state.account.failure : state.phase === "authenticated" && state.account.at === "claimed" && state.account.org?.at === "failed" ? state.account.org.failure : void 0;
231
+ const stateFailure = state.phase === "faulted" ? state.failure : state.phase === "authenticated" && state.account.at === "failed" ? state.account.failure : state.phase === "authenticated" && state.account.at === "claimed" ? state.account.org?.failure : void 0;
232
232
  if (stateFailure?.code === reason) return {
233
233
  ok: false,
234
234
  reason,
@@ -266,8 +266,7 @@ function normalizeOrganization(organization) {
266
266
  /** The Organization id when its lane is already running or finished, else null. */
267
267
  const runningOrganization = (state) => {
268
268
  if (state.phase !== "authenticated" || state.account.at !== "claimed") return null;
269
- const org = state.account.org;
270
- return org !== null && (org.at === "loading" || org.at === "settingUp" || org.at === "ready") ? org.orgId : null;
269
+ return state.account.org?.orgId ?? null;
271
270
  };
272
271
  /** A superseded session read waits at most this long for the winning read. */
273
272
  const SESSION_SETTLE_LIMIT_MS = 3e4;
@@ -488,20 +487,6 @@ function createAuth(client, clearAuthenticatedQueries) {
488
487
  ok: true,
489
488
  orgId: running
490
489
  };
491
- if (current.phase === "authenticated" && current.account.at === "claimed") {
492
- const org = current.account.org;
493
- if (org?.at === "failed" && org.orgId !== null) {
494
- if (!org.retryable) return {
495
- ok: false,
496
- reason: org.failure.code
497
- };
498
- const retried = await runtime.send({ _tag: "RetryOrganization" }, invocation);
499
- return failure(retried) ?? {
500
- ok: true,
501
- orgId: org.orgId
502
- };
503
- }
504
- }
505
490
  const prepared = await prepareOrganization(submission, invocation);
506
491
  if (!prepared.ok) return prepared;
507
492
  const opened = runningOrganization(runtime.snapshot());
@@ -509,20 +494,24 @@ function createAuth(client, clearAuthenticatedQueries) {
509
494
  ok: true,
510
495
  orgId: opened
511
496
  };
512
- const created = await runtime.send({
513
- _tag: "CreateOrganization",
514
- draft: prepared.organization
515
- }, invocation);
516
- const refused = failure(created);
517
- if (refused !== null) return refused;
518
- const state = created.state;
519
- const org = state.phase === "authenticated" && state.account.at === "claimed" ? state.account.org : null;
520
- return org?.at === "ready" && org.orgId !== null ? {
521
- ok: true,
522
- orgId: org.orgId
523
- } : {
497
+ const begun = await client.onboarding.beginOrganization(prepared.organization, invocation);
498
+ if (!begun.ok) return {
524
499
  ok: false,
525
- reason: "UNKNOWN"
500
+ reason: begun.error.code,
501
+ error: begun.error
502
+ };
503
+ const { orgId, setup } = begun.value;
504
+ if (setup.status === "awaitingAuthorization") {
505
+ const authorized = await client.org(orgId).setup.authorize(invocation);
506
+ if (!authorized.ok) return {
507
+ ok: false,
508
+ reason: authorized.error.code,
509
+ error: authorized.error
510
+ };
511
+ }
512
+ return {
513
+ ok: true,
514
+ orgId: String(orgId)
526
515
  };
527
516
  }).then((result) => {
528
517
  if (result.ok) return result;
@@ -535,8 +524,21 @@ function createAuth(client, clearAuthenticatedQueries) {
535
524
  }),
536
525
  retry: (options) => guarded(runtime, "retry", options, async (invocation) => {
537
526
  const state = runtime.snapshot();
538
- const event = state.phase === "authenticated" && state.account.at === "claimed" ? { _tag: "RetryOrganization" } : { _tag: "RetryAccount" };
539
- const result = await runtime.send(event, invocation);
527
+ const orgId = runningOrganization(state);
528
+ if (orgId !== null) {
529
+ const scoped = client.org(orgId);
530
+ const current = await scoped.setup.get(invocation);
531
+ if (!current.ok) return {
532
+ ok: false,
533
+ reason: current.error.code
534
+ };
535
+ const result = current.value.status === "awaitingAuthorization" ? await scoped.setup.authorize(invocation) : await scoped.setup.resume(invocation);
536
+ return result.ok ? { ok: true } : {
537
+ ok: false,
538
+ reason: result.error.code
539
+ };
540
+ }
541
+ const result = await runtime.send({ _tag: "RetryAccount" }, invocation);
540
542
  return failure(result) ?? { ok: true };
541
543
  }),
542
544
  resumeSubmittedOrganization: (submission, options) => guarded(runtime, "createOrganization", options, async (invocation) => {
@@ -565,7 +567,7 @@ function CapxulIdentityProvider({ client, children }) {
565
567
  if (!active) return;
566
568
  state = runtime.snapshot();
567
569
  }
568
- if (state.phase === "authenticated" && state.profileComplete && state.account.at === "unknown") await runtime.send({ _tag: "EnsureAccount" }, { signal: controller.signal });
570
+ if (client._internal.accountSetup !== "explicit" && state.phase === "authenticated" && state.profileComplete && state.account.at === "unknown") await runtime.send({ _tag: "EnsureAccount" }, { signal: controller.signal });
569
571
  }).catch(() => void 0);
570
572
  return () => {
571
573
  active = false;
@@ -580,7 +582,7 @@ function CapxulIdentityProvider({ client, children }) {
580
582
  const account = actingAccount(state);
581
583
  const accountChanged = previousAccount !== void 0 && account !== void 0 && account !== previousAccount;
582
584
  previousAccount = account;
583
- if (record.outcome === "applied" && (record.from !== record.to || accountChanged) && (record.to === "authenticated:claimed" || record.to === "authenticated:claimed:ready")) queryClient.invalidateQueries({
585
+ if (record.outcome === "applied" && (record.from !== record.to || accountChanged) && (record.to === "authenticated:claimed" || record.to === "authenticated:claimed:organization")) queryClient.invalidateQueries({
584
586
  queryKey: capxulKeys.root,
585
587
  ...accountChanged ? { refetchType: "none" } : {}
586
588
  });
@@ -720,6 +722,7 @@ function clearClientScopedQueries(queryClient, ownsQueryClient) {
720
722
  }
721
723
  function CapxulProvider(props) {
722
724
  const { publishableKey, client: injectedClient, requirement, signer, observability, bootstrapBaseUrl, queryClient, children } = props;
725
+ const accountSetup = "accountSetup" in props ? props.accountSetup : void 0;
723
726
  const [resolvedQueryClient] = useState(() => queryClient ?? makeDefaultQueryClient());
724
727
  const [ownsQueryClient] = useState(() => queryClient === void 0);
725
728
  const [attempt, setAttempt] = useState(0);
@@ -731,13 +734,15 @@ function CapxulProvider(props) {
731
734
  ...requirement === void 0 ? {} : { requirement },
732
735
  ...signer === void 0 ? {} : { signer },
733
736
  ...observability === void 0 ? {} : { observability },
734
- ...bootstrapBaseUrl === void 0 ? {} : { bootstrapBaseUrl }
737
+ ...bootstrapBaseUrl === void 0 ? {} : { bootstrapBaseUrl },
738
+ ...accountSetup === void 0 ? {} : { accountSetup }
735
739
  }, [
736
740
  publishableKey,
737
741
  requirement,
738
742
  signer,
739
743
  observability,
740
744
  bootstrapBaseUrl,
745
+ accountSetup,
741
746
  attempt
742
747
  ]);
743
748
  const [ownedBootstrap, setOwnedBootstrap] = useState(null);
@@ -919,15 +924,15 @@ function CapxulOnboardingController(props) {
919
924
  if (submission !== null && state.account.at === "claimed") {
920
925
  const org = state.account.org;
921
926
  if (org === null) return organizationForm(props, state, auth, submission);
922
- if (org.at === "failed") {
923
- const retry = org.retryable ? org.orgId === null ? (options) => auth.createOrganization(submission, options) : auth.retry : void 0;
927
+ if (org.observation === "error" || org.setup?.status === "failed" || org.setup?.status === "needsAttention" || org.setup?.status === "awaitingAuthorization") {
928
+ const retry = org.orgId === null ? (options) => auth.createOrganization(submission, options) : auth.retry;
924
929
  return slots.organizationFailure({
925
930
  state,
926
931
  org,
927
- ...retry === void 0 ? {} : { retry }
932
+ retry
928
933
  });
929
934
  }
930
- if (org.at !== "ready") return slots.organizationProgress({
935
+ if (org.setup?.status !== "ready" || org.observation !== "connected") return slots.organizationProgress({
931
936
  state,
932
937
  org
933
938
  });
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { A as entered, C as CreateOrganizationFailure, D as OrganizationDetails, E as InvocationOptions, F as useCapxulTransitions, M as useCapxulDestination, N as useCapxulIdentity, O as ProfileDetails, P as useCapxulSend, S as CapxulSend, T as Destination, _ as ReadyDestination, a as AuthenticationSlots, b as Slot, c as ControllerAction, d as OnboardingControllerProps, f as OrgFailure, g as ProfileSlotProps, h as PendingAuthState, i as AuthenticatedState, j as useCapxulAuth, k as SendResult, l as FaultedState, m as OtpPendingState, n as AccountProgress, o as CapxulAuthenticationController, p as OrgProgress, r as ActionResult, s as CapxulOnboardingController, t as AccountFailure, u as NavigationAction, v as RetryAction, w as CreateOrganizationSubmission, x as CapxulAuth, y as SignedOutState } from "./controllers-BWmKRFy6.mjs";
1
+ import { A as entered, C as CreateOrganizationFailure, D as OrganizationDetails, E as InvocationOptions, F as useCapxulTransitions, M as useCapxulDestination, N as useCapxulIdentity, O as ProfileDetails, P as useCapxulSend, S as CapxulSend, T as Destination, _ as ReadyDestination, a as AuthenticationSlots, b as Slot, c as ControllerAction, d as OnboardingControllerProps, f as OrgFailure, g as ProfileSlotProps, h as PendingAuthState, i as AuthenticatedState, j as useCapxulAuth, k as SendResult, l as FaultedState, m as OtpPendingState, n as AccountProgress, o as CapxulAuthenticationController, p as OrgProgress, r as ActionResult, s as CapxulOnboardingController, t as AccountFailure, u as NavigationAction, v as RetryAction, w as CreateOrganizationSubmission, x as CapxulAuth, y as SignedOutState } from "./controllers-BMAU2kKH.mjs";
2
2
  import { ReactNode, RefCallback } from "react";
3
3
  import { QueryClient, UseMutationResult, UseQueryResult } from "@tanstack/react-query";
4
- import { Account, AccountRequirement, ActivityAnnotation, ActivityAnnotationInput, ActivityDetail, ActivityKind, ActivityListParams, ActivityPage, ActivityPhase, ActivityRange, ActivityReference, ActorReference, AddressBookEntry, BudgetId, CapxulClient, CapxulError, CapxulResult, CapxulSigner, CreateOrgInput, CurrentHoldings, HostObservability, IdentityDestination, IdentityState, InviteMemberInput, MemberView, Money, MoneyParseErrorReason, OrgId, OrgView, OrganizationPaymentBatchInput, OrganizationPaymentInput, PartyId, Payment, PaymentDirection, PaymentDocumentRef, PaymentDocumentRender, PaymentStatus, PaymentTiming, PaymentType, PaymentsPayInput, PayrollGroupId, PayrollGroupInput, PayrollRunId, PayrollRunStatus, Permission, PermissionMethods, PermissionReadResult, Profile, RoleView, SubmittedPermissionExecution, isClaimed, isRestoring } from "@capxul/sdk";
4
+ import { Account, AccountRequirement, ActivityAnnotation, ActivityAnnotationInput, ActivityDetail, ActivityKind, ActivityListParams, ActivityPage, ActivityPhase, ActivityRange, ActivityReference, ActivitySummaryTotal, ActorReference, AddressBookEntry, AssetAmount, AssetId, BudgetId, CapxulClient, CapxulError, CapxulResult, CapxulSigner, CurrentHoldings, HostObservability, IdentityDestination, IdentityState, MemberView, Money, MoneyParseErrorReason, OrgId, OrganizationAccess, OrganizationOnboarding, OrganizationOnboardingInput, OrganizationPaymentBatchInput, OrganizationPaymentInput, PartyId, Payment, PaymentDirection, PaymentDocumentDownload, PaymentDocumentReadRef, PaymentDocumentRef, PaymentDocumentRender, PaymentStatus, PaymentTiming, PaymentType, PaymentsPayInput, PayrollGroupId, PayrollGroupInput, PayrollRunId, PayrollRunStatus, Permission, PermissionMethods, PermissionReadResult, Profile, RoleView, SubmittedPermissionExecution, isClaimed, isRestoring } from "@capxul/sdk";
5
5
  //#region src/provider.d.ts
6
6
  type CapxulProviderSharedProps = {
7
7
  /** Bring your own QueryClient; otherwise the provider creates one. */
@@ -28,6 +28,11 @@ type CapxulProviderPublishableKeyProps = CapxulProviderSharedProps & {
28
28
  * route cross-origin for the publishable key's allowed origins.
29
29
  */
30
30
  readonly bootstrapBaseUrl?: string;
31
+ /**
32
+ * AUTH A3. Pass `"explicit"` on `/connect` so restore and OTP do not write
33
+ * Profile, Account, or invitations. Default automatic.
34
+ */
35
+ readonly accountSetup?: "automatic" | "explicit";
31
36
  };
32
37
  /**
33
38
  * Node / server / test path — a pre-built client is supplied; lifecycle stays
@@ -77,7 +82,7 @@ declare function useCapxulAccountBalance(options?: UseCapxulAccountBalanceOption
77
82
  //#region src/hooks/use-capxul-account-fund.d.ts
78
83
  type UseCapxulAccountFundReturn = UseMutationResult<{
79
84
  readonly txHash: string;
80
- }, CapxulError, Money>;
85
+ }, CapxulError, AssetAmount>;
81
86
  declare function useCapxulAccountFund(): UseCapxulAccountFundReturn;
82
87
  //#endregion
83
88
  //#region src/hooks/use-capxul-money.d.ts
@@ -143,7 +148,7 @@ declare function useCapxulHoldings(params?: UseCapxulHoldingsParams): UseQueryRe
143
148
  * List the Organizations that the current user can access. Binds directly to
144
149
  * the locked `capxul.orgs()` SDK method.
145
150
  */
146
- type UseCapxulOrgsReturn = UseQueryResult<readonly OrgView[], CapxulError>;
151
+ type UseCapxulOrgsReturn = UseQueryResult<readonly OrganizationAccess[], CapxulError>;
147
152
  type UseCapxulOrgsOptions = {
148
153
  /**
149
154
  * Gate the query on auth readiness. `client.orgs()` is a session-scoped
@@ -194,29 +199,11 @@ declare function useCapxulOrgTreasury(orgId: OrgId | undefined, options?: UseCap
194
199
  //#region src/hooks/use-capxul-create-org.d.ts
195
200
  /**
196
201
  * Create an Organization. Binds directly to the
197
- * `capxul.createOrg(input)` SDK method. On success, invalidates the org list.
202
+ * `onboarding.completeOrganization(input)` SDK method. On success, invalidates the org list.
198
203
  */
199
- type UseCapxulCreateOrgReturn = UseMutationResult<OrgView, CapxulError, CreateOrgInput>;
204
+ type UseCapxulCreateOrgReturn = UseMutationResult<OrganizationOnboarding, CapxulError, OrganizationOnboardingInput>;
200
205
  declare function useCapxulCreateOrg(): UseCapxulCreateOrgReturn;
201
206
  //#endregion
202
- //#region src/hooks/use-capxul-invite-member.d.ts
203
- /**
204
- * R06 (#1964): `options` is the browser attempt the caller captured before the
205
- * person pressed Send. It reaches the SDK operation unchanged, so the durable
206
- * `org_invite_sent` and the later `org_invite_progressed` carry that attempt's
207
- * correlation. Absent, the invitation keeps its own invocation context.
208
- */
209
- type UseCapxulInviteMemberInput = InviteMemberInput & {
210
- readonly options?: InvocationOptions;
211
- };
212
- /**
213
- * Invite a member to an Organization by email. The hook uses the closed-over `orgId`.
214
- * It binds directly to
215
- * `capxul.org(orgId).invite(input)`. On success, invalidates the member list.
216
- */
217
- type UseCapxulInviteMemberReturn = UseMutationResult<MemberView, CapxulError, UseCapxulInviteMemberInput>;
218
- declare function useCapxulInviteMember(orgId: OrgId | undefined): UseCapxulInviteMemberReturn;
219
- //#endregion
220
207
  //#region src/headless/journey/journey-state.d.ts
221
208
  type OnboardingIntent = "personal" | "organization";
222
209
  type OnboardingStep = "profile" | "organization" | "provisioning";
@@ -456,7 +443,7 @@ interface CapxulContactsProps {
456
443
  readonly onFailed: (error: CapxulError, options?: InvocationOptions) => void;
457
444
  readonly children: ReactNode;
458
445
  }
459
- declare function Root$6({ actor, onAdded, onFailed, children }: CapxulContactsProps): import("react/jsx-runtime").JSX.Element;
446
+ declare function Root$7({ actor, onAdded, onFailed, children }: CapxulContactsProps): import("react/jsx-runtime").JSX.Element;
460
447
  declare function Summary$3({ children }: {
461
448
  readonly children: (slice: ContactsSummarySlice) => ReactNode;
462
449
  }): import("react/jsx-runtime").JSX.Element;
@@ -467,7 +454,7 @@ declare function Add({ children }: {
467
454
  readonly children: (slice: ContactsAddSlice) => ReactNode;
468
455
  }): import("react/jsx-runtime").JSX.Element;
469
456
  /** The compound shape the app's own design system already uses (`StatusTabs`). */
470
- declare const CapxulContacts: typeof Root$6 & {
457
+ declare const CapxulContacts: typeof Root$7 & {
471
458
  Summary: typeof Summary$3;
472
459
  List: typeof List;
473
460
  Add: typeof Add;
@@ -520,8 +507,8 @@ type ActivityRow = {
520
507
  */
521
508
  type SummaryWindow = "all" | "last30days" | ActivityRange;
522
509
  /**
523
- * Finished money strings for ONE currency bucket, so no consumer indexes an
524
- * array of per-currency totals. All four strings are `null` and `count` is `0`
510
+ * Finished valuation strings in the display currency. Unrated assets remain
511
+ * separate. All four strings are `null` and `count` is `0`
525
512
  * when the window holds no activity — we say there is nothing, the app says it
526
513
  * in its own words.
527
514
  */
@@ -532,6 +519,7 @@ interface ActivitySummarySlice {
532
519
  readonly moneyOut: string | null;
533
520
  readonly net: string | null;
534
521
  readonly pending: string | null;
522
+ readonly unrated: readonly ActivitySummaryTotal[];
535
523
  /** A count is not money, so it is not formatted. */
536
524
  readonly count: number;
537
525
  readonly isLoading: boolean;
@@ -595,9 +583,12 @@ interface ActivityLoadMoreSlice {
595
583
  interface ActivityDetailSlice {
596
584
  /** Current Payment state from the existing detail read; absent for Movements. */
597
585
  readonly payment?: Pick<Payment, "status" | "execution">;
598
- /** ONE finished document, never the array, so no consumer writes `documents[0]`. */
599
- readonly receiptDocument: PaymentDocumentRef | null;
600
- readonly openReceiptDocument: () => Promise<PaymentDocumentRender>;
586
+ readonly documents: readonly PaymentDocumentRef[];
587
+ readonly selectedDocument: PaymentDocumentRef | null;
588
+ readonly selectDocument: (ref: PaymentDocumentReadRef) => void;
589
+ readonly renderDocument: () => Promise<PaymentDocumentRender>;
590
+ /** Return exact bytes on a deliberate action. The host owns the download URL. */
591
+ readonly downloadDocument: () => Promise<PaymentDocumentDownload>;
601
592
  readonly isOpeningDocument: boolean;
602
593
  readonly memo: string;
603
594
  readonly setMemo: (text: string) => void;
@@ -637,7 +628,7 @@ interface CapxulActivityProps {
637
628
  readonly pageSize?: number;
638
629
  readonly children: ReactNode;
639
630
  }
640
- declare function Root$5({ actor, pageSize, children }: CapxulActivityProps): import("react/jsx-runtime").JSX.Element;
631
+ declare function Root$6({ actor, pageSize, children }: CapxulActivityProps): import("react/jsx-runtime").JSX.Element;
641
632
  /**
642
633
  * The one part that holds a query rather than reading the engine's: it takes a
643
634
  * `window` prop, and two placements can ask for different windows, so a single
@@ -668,7 +659,7 @@ declare function Export({ children }: {
668
659
  readonly children: (slice: ActivityExportSlice) => ReactNode;
669
660
  }): import("react/jsx-runtime").JSX.Element;
670
661
  /** The compound shape the app's own design system already uses (`StatusTabs`). */
671
- declare const CapxulActivity: typeof Root$5 & {
662
+ declare const CapxulActivity: typeof Root$6 & {
672
663
  Summary: typeof Summary$2;
673
664
  Filters: typeof Filters;
674
665
  Search: typeof Search;
@@ -703,7 +694,7 @@ type SentPayment = {
703
694
  /** The backend payment row. */
704
695
  readonly payment: Payment;
705
696
  /** What we parsed and sent — `.value` is the comma-stripped major-unit string. */
706
- readonly amount: Money;
697
+ readonly amount: AssetAmount;
707
698
  /** The trimmed text the person typed — the app's success toast interpolates it. */
708
699
  readonly recipient: string;
709
700
  };
@@ -711,7 +702,7 @@ type SentPayment = {
711
702
  * Refusal CODES, never sentences (#1447 ruling 8). The app maps each code to
712
703
  * the words it already prints; no English refusal string ships from here.
713
704
  */
714
- type CapxulSendMoneyBlockedReason = "signer-not-ready" | "amount-invalid" | "recipient-unresolved" | "no-source" | "no-asset";
705
+ type CapxulSendMoneyBlockedReason = "signer-not-ready" | "amount-invalid" | "recipient-unresolved" | "no-source" | "no-asset" | "asset-unnamed";
715
706
  /**
716
707
  * One Budget the member can spend from — the id the payment carries, and
717
708
  * nothing else.
@@ -736,7 +727,7 @@ interface SendMoneySourceSlice {
736
727
  readonly isPending: boolean;
737
728
  }
738
729
  interface SendMoneyAssetOption {
739
- readonly id: string;
730
+ readonly id: AssetId;
740
731
  readonly symbol: string;
741
732
  readonly availableDisplay: string;
742
733
  }
@@ -771,7 +762,7 @@ interface CapxulSendMoneyProps {
771
762
  readonly onFailed: (error: CapxulError) => void;
772
763
  readonly children: ReactNode;
773
764
  }
774
- declare function Root$4({ actor, onSent, onFailed, children }: CapxulSendMoneyProps): import("react/jsx-runtime").JSX.Element;
765
+ declare function Root$5({ actor, onSent, onFailed, children }: CapxulSendMoneyProps): import("react/jsx-runtime").JSX.Element;
775
766
  declare function Source({ children }: {
776
767
  readonly children: (slice: SendMoneySourceSlice) => ReactNode;
777
768
  }): import("react/jsx-runtime").JSX.Element;
@@ -788,7 +779,7 @@ declare function Actions$1({ children }: {
788
779
  readonly children: (slice: SendMoneyActionsSlice) => ReactNode;
789
780
  }): import("react/jsx-runtime").JSX.Element;
790
781
  /** The compound shape the app's own design system already uses (`StatusTabs`). */
791
- declare const CapxulSendMoney: typeof Root$4 & {
782
+ declare const CapxulSendMoney: typeof Root$5 & {
792
783
  Source: typeof Source;
793
784
  Asset: typeof Asset$1;
794
785
  Amount: typeof Amount;
@@ -820,7 +811,7 @@ interface CapxulOrgMemberProps {
820
811
  readonly orgId: OrgId | string | undefined;
821
812
  readonly children: ReactNode;
822
813
  }
823
- declare function Root$3({ orgId, children }: CapxulOrgMemberProps): import("react/jsx-runtime").JSX.Element;
814
+ declare function Root$4({ orgId, children }: CapxulOrgMemberProps): import("react/jsx-runtime").JSX.Element;
824
815
  /**
825
816
  * One part serves all four denial idioms the app already uses: disabled with no
826
817
  * explanation, disabled plus a native `title`, a whole-surface swap, and
@@ -835,7 +826,7 @@ declare function Standing({ children }: {
835
826
  readonly children: (slice: OrgMemberStandingSlice) => ReactNode;
836
827
  }): import("react/jsx-runtime").JSX.Element;
837
828
  /** The compound shape the app's own design system already uses (`StatusTabs`). */
838
- declare const CapxulOrgMember: typeof Root$3 & {
829
+ declare const CapxulOrgMember: typeof Root$4 & {
839
830
  Can: typeof Can;
840
831
  Standing: typeof Standing;
841
832
  };
@@ -849,14 +840,14 @@ type DashboardScope = {
849
840
  };
850
841
  type DashboardAccessPhase = "checking" | "error" | "redirect" | "granted";
851
842
  /**
852
- * Which of the three probes produced the error the screen is showing. The
843
+ * Which probe produced the error the screen is showing. The
853
844
  * error code alone cannot say: a provider failure reads the same whether the
854
845
  * session read, the membership list or the lifecycle read raised it, and a
855
846
  * consumer that reports a displayed gate error has to keep those apart
856
847
  * (#1963 R05-2). It names the SOURCE only; `retry` still re-runs every failed
857
848
  * probe, exactly as before.
858
849
  */
859
- type DashboardAccessProbe = "session" | "membership" | "lifecycle";
850
+ type DashboardAccessProbe = "session" | "membership" | "lifecycle" | "authority";
860
851
  interface DashboardAccessErrorSlice {
861
852
  readonly error: CapxulError;
862
853
  /** The probe the surfaced error came from, in the frozen precedence order. */
@@ -871,9 +862,9 @@ interface CapxulDashboardAccessProps {
871
862
  readonly scope: DashboardScope;
872
863
  readonly children: ReactNode;
873
864
  }
874
- declare function Root$2({ scope, children }: CapxulDashboardAccessProps): import("react/jsx-runtime").JSX.Element;
865
+ declare function Root$3({ scope, children }: CapxulDashboardAccessProps): import("react/jsx-runtime").JSX.Element;
875
866
  /** Hands nothing — today's app renders `null` here, exactly as it does now. */
876
- declare function Checking({ children }: {
867
+ declare function Checking$1({ children }: {
877
868
  readonly children?: ReactNode;
878
869
  }): import("react/jsx-runtime").JSX.Element | null;
879
870
  declare function DashboardError({ children }: {
@@ -892,8 +883,8 @@ declare function Granted({ children }: {
892
883
  readonly children?: ReactNode;
893
884
  }): import("react/jsx-runtime").JSX.Element | null;
894
885
  /** The compound shape the app's own design system already uses (`StatusTabs`). */
895
- declare const CapxulDashboardAccess: typeof Root$2 & {
896
- Checking: typeof Checking;
886
+ declare const CapxulDashboardAccess: typeof Root$3 & {
887
+ Checking: typeof Checking$1;
897
888
  Error: typeof DashboardError;
898
889
  Redirect: typeof Redirect;
899
890
  Granted: typeof Granted;
@@ -941,7 +932,7 @@ interface CapxulPayrollProps {
941
932
  readonly orgId: OrgId | undefined;
942
933
  readonly children: ReactNode;
943
934
  }
944
- declare function Root$1({ orgId, children }: CapxulPayrollProps): import("react/jsx-runtime").JSX.Element;
935
+ declare function Root$2({ orgId, children }: CapxulPayrollProps): import("react/jsx-runtime").JSX.Element;
945
936
  declare function Summary$1({ children }: {
946
937
  readonly children: (slice: PayrollSummarySlice) => ReactNode;
947
938
  }): import("react/jsx-runtime").JSX.Element;
@@ -953,7 +944,7 @@ declare function Groups({ children }: {
953
944
  * There is NO `.Runs` part (ruling Q6): no shipped region has the right shape
954
945
  * for a run list, and a part without a production caller may not ship.
955
946
  */
956
- declare const CapxulPayroll: typeof Root$1 & {
947
+ declare const CapxulPayroll: typeof Root$2 & {
957
948
  Summary: typeof Summary$1;
958
949
  Groups: typeof Groups;
959
950
  };
@@ -975,10 +966,10 @@ interface PayrollRecipientOption {
975
966
  //#region src/headless/payroll/use-payroll-run.d.ts
976
967
  /**
977
968
  * Refusal CODES, never sentences (ADR-0023 R1). `blockedReason` names the FIRST
978
- * false fact in the fixed order of the contract's seven-row table, so the same
979
- * composer state always yields the same code.
969
+ * false fact in the fixed order below, so the same composer state always
970
+ * yields the same code.
980
971
  */
981
- type CapxulPayrollRunBlockedReason = "signer-not-ready" | "no-source" | "ambiguous-source" | "no-asset" | "no-recipients" | "amount-invalid" | "insufficient-funds";
972
+ type CapxulPayrollRunBlockedReason = "signer-not-ready" | "no-source" | "ambiguous-source" | "no-asset" | "no-recipients" | "amount-invalid" | "insufficient-funds" | "asset-unnamed";
982
973
  interface PayrollRunGroupOption {
983
974
  readonly id: PayrollGroupId;
984
975
  readonly label: string;
@@ -1005,7 +996,7 @@ interface PayrollRunAmountEntry {
1005
996
  /** True while the value is one we seeded and the employer has not edited. */
1006
997
  readonly prefilled: boolean;
1007
998
  /** The treasury asset's currency. Rows stay absent until this value exists. */
1008
- readonly currency: Money["currency"];
999
+ readonly currency: string;
1009
1000
  }
1010
1001
  interface PayrollRunAmountsSlice {
1011
1002
  readonly entries: readonly PayrollRunAmountEntry[];
@@ -1058,7 +1049,7 @@ interface CapxulPayrollRunProps {
1058
1049
  readonly onFailed: (error: CapxulError) => void;
1059
1050
  readonly children: ReactNode;
1060
1051
  }
1061
- declare function Root({ orgId, prefill, onRun, onFailed, children }: CapxulPayrollRunProps): import("react/jsx-runtime").JSX.Element;
1052
+ declare function Root$1({ orgId, prefill, onRun, onFailed, children }: CapxulPayrollRunProps): import("react/jsx-runtime").JSX.Element;
1062
1053
  declare function Recipients({ children }: {
1063
1054
  readonly children: (slice: PayrollRunRecipientsSlice) => ReactNode;
1064
1055
  }): import("react/jsx-runtime").JSX.Element;
@@ -1075,7 +1066,7 @@ declare function Actions({ children }: {
1075
1066
  readonly children: (slice: PayrollRunActionsSlice) => ReactNode;
1076
1067
  }): import("react/jsx-runtime").JSX.Element;
1077
1068
  /** The compound shape the app's own design system already uses (`StatusTabs`). */
1078
- declare const CapxulPayrollRun: typeof Root & {
1069
+ declare const CapxulPayrollRun: typeof Root$1 & {
1079
1070
  Recipients: typeof Recipients;
1080
1071
  Amounts: typeof Amounts;
1081
1072
  Asset: typeof Asset;
@@ -1083,6 +1074,64 @@ declare const CapxulPayrollRun: typeof Root & {
1083
1074
  Actions: typeof Actions;
1084
1075
  };
1085
1076
  //#endregion
1077
+ //#region src/headless/client-connection/use-client-connection.d.ts
1078
+ interface OtpSlice {
1079
+ readonly email: string;
1080
+ readonly pending: boolean;
1081
+ readonly canResend: boolean;
1082
+ readonly verifyCode: (code: string) => Promise<void>;
1083
+ readonly resend: () => Promise<void>;
1084
+ }
1085
+ interface ConsentSlice {
1086
+ readonly verifiedEmail: string;
1087
+ readonly clientLabel: string;
1088
+ readonly scopeCodes: readonly string[];
1089
+ readonly purpose: "login" | "signup";
1090
+ readonly setupState: "not_required" | "new" | "resumable";
1091
+ readonly pending: boolean;
1092
+ readonly accept: () => Promise<void>;
1093
+ readonly cancel: () => Promise<void>;
1094
+ }
1095
+ interface CompleteSlice {
1096
+ readonly outcome: "connected";
1097
+ }
1098
+ interface FailureSlice {
1099
+ readonly code: string;
1100
+ readonly field?: string;
1101
+ readonly retry: () => Promise<void>;
1102
+ readonly cancel: () => Promise<void>;
1103
+ }
1104
+ //#endregion
1105
+ //#region src/headless/client-connection/client-connection.d.ts
1106
+ interface CapxulClientConnectionProps {
1107
+ readonly client: CapxulClient;
1108
+ readonly requestId: string;
1109
+ readonly children: ReactNode;
1110
+ }
1111
+ declare function Root({ client, requestId, children }: CapxulClientConnectionProps): import("react/jsx-runtime").JSX.Element;
1112
+ declare function Checking({ children }: {
1113
+ readonly children: ReactNode;
1114
+ }): import("react/jsx-runtime").JSX.Element | null;
1115
+ declare function Otp({ children }: {
1116
+ readonly children: (slice: OtpSlice) => ReactNode;
1117
+ }): import("react/jsx-runtime").JSX.Element | null;
1118
+ declare function Consent({ children }: {
1119
+ readonly children: (slice: ConsentSlice) => ReactNode;
1120
+ }): import("react/jsx-runtime").JSX.Element | null;
1121
+ declare function Complete({ children }: {
1122
+ readonly children: (slice: CompleteSlice) => ReactNode;
1123
+ }): import("react/jsx-runtime").JSX.Element | null;
1124
+ declare function Failure({ children }: {
1125
+ readonly children: (slice: FailureSlice) => ReactNode;
1126
+ }): import("react/jsx-runtime").JSX.Element | null;
1127
+ declare const CapxulClientConnection: typeof Root & {
1128
+ Checking: typeof Checking;
1129
+ Otp: typeof Otp;
1130
+ Consent: typeof Consent;
1131
+ Complete: typeof Complete;
1132
+ Failure: typeof Failure;
1133
+ };
1134
+ //#endregion
1086
1135
  //#region src/internal/reactivity-keys.d.ts
1087
1136
  declare const capxulKeys: {
1088
1137
  root: readonly ["capxul"];
@@ -1113,4 +1162,4 @@ declare const capxulKeys: {
1113
1162
  payment: (paymentId: string | undefined) => readonly ["capxul", "payments", string];
1114
1163
  };
1115
1164
  //#endregion
1116
- export { type AccountFailure, type AccountProgress, type ActionResult, type ActivityDetailSlice, type ActivityExportSlice, type ActivityFilterValues, type ActivityFiltersSlice, type ActivityLoadMoreSlice, type ActivityReceipt, type ActivityRow, type ActivityRowsSlice, type ActivitySearchSlice, type ActivitySummarySlice, type AuthenticatedState, type AuthenticationSlots, type CanReason, CapxulActivity, type CapxulActivityProps, type CapxulAuth, CapxulAuthenticationController, type CapxulBootstrapState, type CapxulBootstrapStatus, CapxulContacts, type CapxulContactsProps, CapxulDashboardAccess, type CapxulDashboardAccessProps, CapxulOnboardingController, CapxulOrgMember, type CapxulOrgMemberProps, CapxulPayroll, type CapxulPayrollProps, CapxulPayrollRun, type CapxulPayrollRunBlockedReason, type CapxulPayrollRunProps, CapxulProvider, type CapxulProviderProps, type CapxulSend, CapxulSendMoney, type CapxulSendMoneyBlockedReason, type CapxulSendMoneyProps, type Contact, type ContactRelationship, type ContactRow, type ContactsActor, type ContactsAddBlockedReason, type ContactsAddError, type ContactsAddSlice, type ContactsListOptions, type ContactsListSlice, type ContactsRefusal, type ContactsSummarySlice, type ControllerAction, type CreateOrganizationFailure, type CreateOrganizationSubmission, type CsvExport, type DashboardAccessErrorSlice, type DashboardAccessPhase, type DashboardAccessProbe, type DashboardAccessRedirectSlice, type DashboardScope, type Destination, type FaultedState, type HandleAvailability, type ImageUploadInput, type ImageUploadTarget, type InvocationOptions, type NavigationAction, type OnboardingControllerProps, type OnboardingIntent, type OnboardingJourney, type OnboardingJourneyPosition, type OnboardingOrigin, type OnboardingStep, type OrgFailure, type OrgMemberAction, type OrgMemberCanSlice, type OrgMemberStanding, type OrgMemberStandingSlice, type OrgProgress, type OrganizationDetails, type OrganizationDraft, type OtpPendingState, type PayoutDraftChain, type PayoutDraftEntry, type PayrollGroupRow, type PayrollGroupsSlice, type PayrollRecipientOption, type PayrollRunActionsSlice, type PayrollRunAmountEntry, type PayrollRunAmountsSlice, type PayrollRunAssetSlice, type PayrollRunGroupOption, type PayrollRunPrefill, type PayrollRunRecipientsSlice, type PayrollRunStatus, type PayrollRunSummarySlice, type PayrollSummarySlice, type PendingAuthState, type ProfileDetails, type ProfileDraft, type ProfileSlotProps, type ReadyDestination, type RetryAction, type SendActor, type SendMoneyActionsSlice, type SendMoneyAmountSlice, type SendMoneyAssetError, type SendMoneyAssetOption, type SendMoneyAssetSlice, type SendMoneyRecipientSlice, type SendMoneyRecipientStatus, type SendMoneySourceError, type SendMoneySourceOption, type SendMoneySourceSlice, type SendResult, type SentPayment, type SentPayrollRun, type SignedOutState, type Slot, type SummaryWindow, type UseCapxulAccountBalanceOptions, type UseCapxulAccountBalanceReturn, type UseCapxulAccountFundReturn, type UseCapxulCreateCommitmentReturn, type UseCapxulCreateOrgReturn, type UseCapxulHandleAvailabilityReturn, type UseCapxulImageUploadReturn, type UseCapxulInviteMemberInput, type UseCapxulInviteMemberReturn, type UseCapxulOrgMembersOptions, type UseCapxulOrgMembersReturn, type UseCapxulOrgRolesOptions, type UseCapxulOrgRolesReturn, type UseCapxulOrgTreasuryOptions, type UseCapxulOrgTreasuryReturn, type UseCapxulOrgsReturn, type UseCapxulPayReturn, type UseCapxulPaymentReturn, type UseCapxulPaymentsReturn, type UseCapxulProfileReturn, type UseCapxulRedirectPaymentReturn, type UseCapxulUploadImageReturn, acknowledgeOnboardingDestination, activeOnboardingRecovery, capxulKeys, clearOnboardingJourney, currentOnboardingJourneyId, entered, invalidateOnboardingJourneyObservation, isClaimed, isRestoring, loadOnboardingJourney, onboardingJourneyPosition, saveOnboardingJourney, startOnboardingJourney, useCapxul, useCapxulAccountBalance, useCapxulAccountFund, useCapxulActivity, useCapxulActivityDetail, useCapxulAnnotateMovement, useCapxulAuth, useCapxulCancelPayment, useCapxulClaimPayment, useCapxulClientOrNull, useCapxulCreateCommitment, useCapxulCreateOrg, useCapxulDestination, useCapxulHandleAvailability, useCapxulHoldings, useCapxulIdentity, useCapxulImageUpload, useCapxulInviteMember, useCapxulOrgMembers, useCapxulOrgRoles, useCapxulOrgTreasury, useCapxulOrganizationPay, useCapxulOrganizationPayBatch, useCapxulOrgs, useCapxulPay, useCapxulPayment, useCapxulPayments, useCapxulPermission, useCapxulPermissionAssign, useCapxulPermissionChange, useCapxulPermissionCreate, useCapxulPermissionReplace, useCapxulPermissionRevoke, useCapxulPermissions, useCapxulProfile, useCapxulRedirectPayment, useCapxulSend, useCapxulTransitions, useCapxulUploadImage };
1165
+ export { type AccountFailure, type AccountProgress, type ActionResult, type ActivityDetailSlice, type ActivityExportSlice, type ActivityFilterValues, type ActivityFiltersSlice, type ActivityLoadMoreSlice, type ActivityReceipt, type ActivityRow, type ActivityRowsSlice, type ActivitySearchSlice, type ActivitySummarySlice, type AuthenticatedState, type AuthenticationSlots, type CanReason, CapxulActivity, type CapxulActivityProps, type CapxulAuth, CapxulAuthenticationController, type CapxulBootstrapState, type CapxulBootstrapStatus, CapxulClientConnection, type CapxulClientConnectionProps, CapxulContacts, type CapxulContactsProps, CapxulDashboardAccess, type CapxulDashboardAccessProps, CapxulOnboardingController, CapxulOrgMember, type CapxulOrgMemberProps, CapxulPayroll, type CapxulPayrollProps, CapxulPayrollRun, type CapxulPayrollRunBlockedReason, type CapxulPayrollRunProps, CapxulProvider, type CapxulProviderProps, type CapxulSend, CapxulSendMoney, type CapxulSendMoneyBlockedReason, type CapxulSendMoneyProps, type CompleteSlice as ClientConnectionCompleteSlice, type ConsentSlice as ClientConnectionConsentSlice, type FailureSlice as ClientConnectionFailureSlice, type OtpSlice as ClientConnectionOtpSlice, type Contact, type ContactRelationship, type ContactRow, type ContactsActor, type ContactsAddBlockedReason, type ContactsAddError, type ContactsAddSlice, type ContactsListOptions, type ContactsListSlice, type ContactsRefusal, type ContactsSummarySlice, type ControllerAction, type CreateOrganizationFailure, type CreateOrganizationSubmission, type CsvExport, type DashboardAccessErrorSlice, type DashboardAccessPhase, type DashboardAccessProbe, type DashboardAccessRedirectSlice, type DashboardScope, type Destination, type FaultedState, type HandleAvailability, type ImageUploadInput, type ImageUploadTarget, type InvocationOptions, type NavigationAction, type OnboardingControllerProps, type OnboardingIntent, type OnboardingJourney, type OnboardingJourneyPosition, type OnboardingOrigin, type OnboardingStep, type OrgFailure, type OrgMemberAction, type OrgMemberCanSlice, type OrgMemberStanding, type OrgMemberStandingSlice, type OrgProgress, type OrganizationDetails, type OrganizationDraft, type OtpPendingState, type PayoutDraftChain, type PayoutDraftEntry, type PayrollGroupRow, type PayrollGroupsSlice, type PayrollRecipientOption, type PayrollRunActionsSlice, type PayrollRunAmountEntry, type PayrollRunAmountsSlice, type PayrollRunAssetSlice, type PayrollRunGroupOption, type PayrollRunPrefill, type PayrollRunRecipientsSlice, type PayrollRunStatus, type PayrollRunSummarySlice, type PayrollSummarySlice, type PendingAuthState, type ProfileDetails, type ProfileDraft, type ProfileSlotProps, type ReadyDestination, type RetryAction, type SendActor, type SendMoneyActionsSlice, type SendMoneyAmountSlice, type SendMoneyAssetError, type SendMoneyAssetOption, type SendMoneyAssetSlice, type SendMoneyRecipientSlice, type SendMoneyRecipientStatus, type SendMoneySourceError, type SendMoneySourceOption, type SendMoneySourceSlice, type SendResult, type SentPayment, type SentPayrollRun, type SignedOutState, type Slot, type SummaryWindow, type UseCapxulAccountBalanceOptions, type UseCapxulAccountBalanceReturn, type UseCapxulAccountFundReturn, type UseCapxulCreateCommitmentReturn, type UseCapxulCreateOrgReturn, type UseCapxulHandleAvailabilityReturn, type UseCapxulImageUploadReturn, type UseCapxulOrgMembersOptions, type UseCapxulOrgMembersReturn, type UseCapxulOrgRolesOptions, type UseCapxulOrgRolesReturn, type UseCapxulOrgTreasuryOptions, type UseCapxulOrgTreasuryReturn, type UseCapxulOrgsReturn, type UseCapxulPayReturn, type UseCapxulPaymentReturn, type UseCapxulPaymentsReturn, type UseCapxulProfileReturn, type UseCapxulRedirectPaymentReturn, type UseCapxulUploadImageReturn, acknowledgeOnboardingDestination, activeOnboardingRecovery, capxulKeys, clearOnboardingJourney, currentOnboardingJourneyId, entered, invalidateOnboardingJourneyObservation, isClaimed, isRestoring, loadOnboardingJourney, onboardingJourneyPosition, saveOnboardingJourney, startOnboardingJourney, useCapxul, useCapxulAccountBalance, useCapxulAccountFund, useCapxulActivity, useCapxulActivityDetail, useCapxulAnnotateMovement, useCapxulAuth, useCapxulCancelPayment, useCapxulClaimPayment, useCapxulClientOrNull, useCapxulCreateCommitment, useCapxulCreateOrg, useCapxulDestination, useCapxulHandleAvailability, useCapxulHoldings, useCapxulIdentity, useCapxulImageUpload, useCapxulOrgMembers, useCapxulOrgRoles, useCapxulOrgTreasury, useCapxulOrganizationPay, useCapxulOrganizationPayBatch, useCapxulOrgs, useCapxulPay, useCapxulPayment, useCapxulPayments, useCapxulPermission, useCapxulPermissionAssign, useCapxulPermissionChange, useCapxulPermissionCreate, useCapxulPermissionReplace, useCapxulPermissionRevoke, useCapxulPermissions, useCapxulProfile, useCapxulRedirectPayment, useCapxulSend, useCapxulTransitions, useCapxulUploadImage };