@capxul/sdk 0.2.0-alpha.3 → 0.2.0-alpha.4

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/dist/index.d.cts CHANGED
@@ -1,114 +1,35 @@
1
- import { S as Session, C as CapxulError$1, a as CapxulClient, A as AccountProvisionPersonalInput, b as CapxulConfig, V as VerifyOtpResult, c as CompleteBootstrapInput, d as CompleteBootstrapResult } from './client-B_Z3ThFO.cjs';
2
- export { e as AccountsClient, f as ApiKeyCreateResult, g as ApiKeysClient, h as AuthBootstrapFlowContext, i as AuthBootstrapFlowError, j as AuthBootstrapFlowEvent, k as AuthBootstrapReason, l as AuthBootstrapToken, m as AuthClient, n as AuthSessionStore, B as BrowserCapxulConfig, o as CapxulAuthConfig, p as CapxulDataClient, q as CapxulFlowFactories, r as CapxulSigningConfig, D as DocumentsClient, E as ExternalAccountsClient, H as HttpTransport, L as LocalPrivateKeySignerProvider, M as MeClient, O as OperationsClient, s as OrgDocumentsClient, t as OrgMembersClient, u as OrgPaymentsClient, v as OrgSafesClient, w as OrgTransfersClient, x as OrgTreasuryClient, y as OrgWithdrawalsClient, z as OrganizationsClient, P as PaymentsClient, F as SubAccountsClient, T as TokenTransfer, G as TokenTransferId, I as TokenTransfersClient, J as TokenTransfersListInput, K as TokenTransfersListPage, N as TokenTransfersRetrieveInput, Q as TransfersClient, R as TransportRuntime, U as TransportState, W as VirtualAccountsClient, X as VirtualCardsClient, Y as WebhookEndpointCreateResult, Z as WebhookEndpointsClient, _ as WebhookEventsClient, $ as WithdrawalsClient, a0 as createAuthBootstrapFlowMachine, a1 as createCapxulClient, a2 as makeHttpTransport, a3 as toTokenTransferId } from './client-B_Z3ThFO.cjs';
1
+ import { A as AccountProvisionPersonalInput, C as CapxulClient } from './client-UEm2oZbZ.cjs';
2
+ export { a as AccountsClient, b as ApiKeyCreateResult, c as ApiKeysClient, d as AuthBootstrapReason, e as AuthBootstrapToken, f as AuthService, g as AuthSessionStore, B as BrowserCapxulConfig, h as CapxulAuthConfig, i as CapxulConfig, j as CapxulDataClient, k as CapxulFlowFactories, l as CapxulSigningConfig, m as CompleteBootstrapInput, n as CompleteBootstrapResult, D as DocumentsClient, E as ExternalAccountsClient, H as HttpTransport, L as LocalPrivateKeySignerProvider, M as MeClient, O as OperationsClient, o as OrgDocumentsClient, p as OrgMembersClient, q as OrgPaymentsClient, r as OrgSafesClient, s as OrgTransfersClient, t as OrgTreasuryClient, u as OrgWithdrawalsClient, v as OrganizationsClient, P as PaymentsClient, S as Session, w as SubAccountsClient, T as TokenTransfer, x as TokenTransferId, y as TokenTransfersClient, z as TokenTransfersListInput, F as TokenTransfersListPage, G as TokenTransfersRetrieveInput, I as TransfersClient, J as TransportRuntime, K as TransportState, V as VerifyOtpResult, N as VirtualAccountsClient, Q as VirtualCardsClient, W as WebhookEndpointCreateResult, R as WebhookEndpointsClient, U as WebhookEventsClient, X as WithdrawalsClient, Y as createCapxulClient, Z as makeHttpTransport, _ as toTokenTransferId } from './client-UEm2oZbZ.cjs';
3
3
  import * as xstate from 'xstate';
4
- import { E as Email, U as Username, O as OperationId, N as NextAction } from './next-action-CTGl8wpy.cjs';
5
- export { A as AccountId, a as ApiKeyId, B as BalanceLedgerEntryId, C as CorrelationId, D as DocumentId, b as ExternalAccountId, K as KybProfileId, c as KycProfileId, M as MemberId, d as OrganizationId, P as PaymentId, e as PhoneNumber, S as SafeId, f as SubAccountId, T as TransactionIntentId, g as TransferId, h as TreasuryId, V as VirtualAccountId, i as VirtualCardId, W as WebhookEndpointId, j as WebhookEventId, k as WithdrawalId, t as toAccountId, l as toApiKeyId, m as toBalanceLedgerEntryId, n as toDocumentId, o as toEmail, p as toExternalAccountId, q as toKybProfileId, r as toKycProfileId, s as toMemberId, u as toOperationId, v as toOrganizationId, w as toPaymentId, x as toPhoneNumber, y as toSafeId, z as toSubAccountId, F as toTransferId, G as toTreasuryId, H as toUsername, I as toVirtualAccountId, J as toVirtualCardId, L as toWebhookEndpointId, Q as toWebhookEventId, R as toWithdrawalId } from './next-action-CTGl8wpy.cjs';
6
- import { C as CapxulError, a as CapxulErrorCode } from './errors-rqxuUhQP.cjs';
4
+ import { C as CapxulError$1, a as CapxulErrorCode$1 } from './errors-rqxuUhQP.cjs';
7
5
  export { b as CapxulErrorDetails, c as CapxulErrorEnvelope, d as CapxulResult } from './errors-rqxuUhQP.cjs';
8
- import { A as Account } from './types-Brucpq0Z.cjs';
9
- export { a as AccountLookupResult, b as ApiKey, c as ApiKeyEnvironment, d as ApiKeyType, B as BalanceLedgerEntry, e as BankStatementDocument, C as CreatePaymentResult, f as CreateTransferResult, g as CreateWithdrawalResult, D as Document, E as ExternalAccount, h as ExternalAccountKind, I as IdentityProfileBase, i as InvoiceDocument, K as KybProfile, j as KybStatus, k as KycProfile, l as KycStatus, m as KycUploadDocument, L as List, M as Member, n as MemberInviteResponse, o as MembershipStatus, p as Money, O as Operation, q as OperationStatus, r as OperationSummary, s as Organization, P as PageInfo, t as Payment, u as PaymentParty, v as PaymentStatus, w as PayrollRunDocument, x as PayrollScheduleDocument, R as ReceiptDocument, S as Safe, y as Scope, z as Settlement, F as SubAccount, G as SubAccountOwnerKind, T as TaxFormDocument, H as TimestampIso, J as Transfer, N as TransferCustody, Q as TransferEndpoint, U as TransferFx, V as TransferStatus, W as Treasury, X as UserIdentifier, Y as VirtualAccount, Z as VirtualAccountOwnerKind, _ as VirtualCard, $ as VirtualCardLimits, a0 as VirtualCardOwnerKind, a1 as WebhookEndpoint, a2 as WebhookEvent, a3 as Withdrawal, a4 as WithdrawalStatus } from './types-Brucpq0Z.cjs';
6
+ import { A as Account } from './types-HlwCIjgQ.cjs';
7
+ export { a as AccountLookupResult, b as ApiKey, c as ApiKeyEnvironment, d as ApiKeyType, B as BalanceLedgerEntry, e as BankStatementDocument, C as CreatePaymentResult, f as CreateTransferResult, g as CreateWithdrawalResult, D as Document, E as ExternalAccount, h as ExternalAccountKind, I as IdentityProfileBase, i as InvoiceDocument, K as KybProfile, j as KybStatus, k as KycProfile, l as KycStatus, m as KycUploadDocument, L as List, M as Member, n as MemberInviteResponse, o as MembershipStatus, p as Money, O as Operation, q as OperationStatus, r as OperationSummary, s as Organization, P as PageInfo, t as Payment, u as PaymentParty, v as PaymentStatus, w as PayrollRunDocument, x as PayrollScheduleDocument, R as ReceiptDocument, S as Safe, y as Scope, z as Settlement, F as SubAccount, G as SubAccountOwnerKind, T as TaxFormDocument, H as TimestampIso, J as Transfer, N as TransferCustody, Q as TransferEndpoint, U as TransferFx, V as TransferStatus, W as Treasury, X as UserIdentifier, Y as VirtualAccount, Z as VirtualAccountOwnerKind, _ as VirtualCard, $ as VirtualCardLimits, a0 as VirtualCardOwnerKind, a1 as WebhookEndpoint, a2 as WebhookEvent, a3 as Withdrawal, a4 as WithdrawalStatus } from './types-HlwCIjgQ.cjs';
8
+ import { U as Username, O as OperationId, N as NextAction } from './next-action-CTGl8wpy.cjs';
9
+ export { A as AccountId, a as ApiKeyId, B as BalanceLedgerEntryId, C as CorrelationId, D as DocumentId, E as Email, b as ExternalAccountId, K as KybProfileId, c as KycProfileId, M as MemberId, d as OrganizationId, P as PaymentId, e as PhoneNumber, S as SafeId, f as SubAccountId, T as TransactionIntentId, g as TransferId, h as TreasuryId, V as VirtualAccountId, i as VirtualCardId, W as WebhookEndpointId, j as WebhookEventId, k as WithdrawalId, t as toAccountId, l as toApiKeyId, m as toBalanceLedgerEntryId, n as toDocumentId, o as toEmail, p as toExternalAccountId, q as toKybProfileId, r as toKycProfileId, s as toMemberId, u as toOperationId, v as toOrganizationId, w as toPaymentId, x as toPhoneNumber, y as toSafeId, z as toSubAccountId, F as toTransferId, G as toTreasuryId, H as toUsername, I as toVirtualAccountId, J as toVirtualCardId, L as toWebhookEndpointId, Q as toWebhookEventId, R as toWithdrawalId } from './next-action-CTGl8wpy.cjs';
10
10
  import { Account as Account$1 } from 'viem';
11
11
  export { WebhookVerificationOptions, WebhookVerificationResult, verifyWebhook } from './webhooks.cjs';
12
12
 
13
13
  /**
14
- * Auth flow errors may originate from two CapxulError surfaces:
15
- * - the SDK-local generic `CapxulError<Codes>` returned by
16
- * `client.auth.*` tuple methods
17
- * - the `@repo/config` `CapxulError` produced by the `Errors.xxx()`
18
- * factory family (per `error-handling.md`)
19
- *
20
- * Both share `.code`, `.message`, `.details`, and extend `Error`. The
21
- * union keeps either origin assignable to `context.error` without an
22
- * `as` cast at the call site.
23
- */
24
- type AuthFlowError = CapxulError | CapxulError$1;
25
- type AuthFlowContext = {
26
- readonly email: Email | null;
27
- readonly session: Session | null;
28
- readonly error: AuthFlowError | null;
29
- };
30
- type AuthFlowEvent = {
31
- readonly type: "REQUEST_OTP";
32
- readonly email: Email;
33
- } | {
34
- readonly type: "VERIFY";
35
- readonly code: string;
36
- } | {
37
- readonly type: "RESET";
38
- } | {
39
- readonly type: "SIGN_OUT";
40
- };
41
- /**
42
- * Build the auth state machine bound to a `CapxulClient` instance.
14
+ * Unified error type used across the entire stack: backend, SDK, and frontend.
15
+ * One class, one set of codes, one language.
43
16
  *
44
- * States: `idle -> sending_otp -> otp_requested -> verifying ->
45
- * authenticated -> signing_out -> idle`, with `error` as a sidecar
46
- * from any async step.
17
+ * Backend throws CapxulError withErrorBoundary serializes to ConvexError
18
+ * SDK deserializes back to CapxulError frontend routes on err.code.
47
19
  */
48
- declare function createAuthFlowMachine(client: CapxulClient): xstate.StateMachine<AuthFlowContext, {
49
- readonly type: "REQUEST_OTP";
50
- readonly email: Email;
51
- } | {
52
- readonly type: "VERIFY";
53
- readonly code: string;
54
- } | {
55
- readonly type: "RESET";
56
- } | {
57
- readonly type: "SIGN_OUT";
58
- }, {
59
- [x: string]: xstate.ActorRefFromLogic<xstate.PromiseActorLogic<void, {
60
- email: Email;
61
- }, xstate.EventObject>> | xstate.ActorRefFromLogic<xstate.PromiseActorLogic<Session, {
62
- email: Email;
63
- code: string;
64
- }, xstate.EventObject>> | xstate.ActorRefFromLogic<xstate.PromiseActorLogic<void, void, xstate.EventObject>> | undefined;
65
- }, {
66
- src: "sendOtp";
67
- logic: xstate.PromiseActorLogic<void, {
68
- email: Email;
69
- }, xstate.EventObject>;
70
- id: string | undefined;
71
- } | {
72
- src: "verifyOtp";
73
- logic: xstate.PromiseActorLogic<Session, {
74
- email: Email;
75
- code: string;
76
- }, xstate.EventObject>;
77
- id: string | undefined;
78
- } | {
79
- src: "signOut";
80
- logic: xstate.PromiseActorLogic<void, void, xstate.EventObject>;
81
- id: string | undefined;
82
- }, {
83
- type: "trackOtpRequested";
84
- params: unknown;
85
- } | {
86
- type: "trackOtpFailed";
87
- params: unknown;
88
- } | {
89
- type: "trackTimeoutFailed";
90
- params: unknown;
91
- } | {
92
- type: "trackVerified";
93
- params: unknown;
94
- } | {
95
- type: "identifyAndTrack";
96
- params: unknown;
97
- } | {
98
- type: "trackSignedOut";
99
- params: unknown;
100
- }, never, never, "idle" | "authenticated" | "error" | "sending_otp" | "otp_requested" | "verifying" | "signing_out", string, xstate.NonReducibleUnknown, xstate.NonReducibleUnknown, xstate.EventObject, xstate.MetaObject, {
101
- id: "auth";
102
- states: {
103
- readonly idle: {};
104
- readonly sending_otp: {};
105
- readonly otp_requested: {};
106
- readonly verifying: {};
107
- readonly authenticated: {};
108
- readonly signing_out: {};
109
- readonly error: {};
110
- };
111
- }>;
20
+ type CapxulErrorCode = "NOT_AUTHENTICATED" | "EMAIL_DELIVERY_FAILED" | "API_KEY_INVALID" | "API_KEY_EXPIRED" | "PROFILE_NOT_FOUND" | "SMART_ACCOUNT_MISSING" | "PLAYER_NOT_FOUND" | "ACCOUNT_NOT_FOUND" | "PROVIDER_ERROR" | "INVALID_INPUT" | "ENV_MISSING" | "NOT_IMPLEMENTED" | "VERIFICATION_REQUIRED" | "INSUFFICIENT_BALANCE" | "INVALID_RECIPIENT" | "TRANSACTION_FAILED" | "RATE_LIMITED" | "NETWORK_ERROR" | "PERMISSION_DENIED" | "IDEMPOTENCY_CONFLICT" | "NOT_FOUND" | "OPERATION_CANCELED" | "OPERATION_TIMEOUT" | "ACTION_REQUIRED" | "KYC_REQUIRED" | "POLICY_DENIED" | "SAFE_NOT_READY" | "PROVIDER_UNAVAILABLE" | "PROVIDER_REJECTED" | "RECONCILIATION_FAILED" | "INTERNAL_ERROR" | "QUOTE_EXPIRED" | "QUOTE_NOT_FOUND" | "INDEXER_DELIVERY_TIMEOUT" | "UNKNOWN";
21
+ declare class CapxulError extends Error {
22
+ readonly code: CapxulErrorCode;
23
+ readonly details?: Record<string, unknown>;
24
+ readonly correlationId?: string;
25
+ readonly layer?: string;
26
+ constructor(code: CapxulErrorCode, message: string, options?: {
27
+ cause?: unknown;
28
+ details?: Record<string, unknown>;
29
+ correlationId?: string;
30
+ layer?: string;
31
+ });
32
+ }
112
33
 
113
34
  /**
114
35
  * Provisioning flow errors may originate from two CapxulError surfaces:
@@ -120,7 +41,7 @@ declare function createAuthFlowMachine(client: CapxulClient): xstate.StateMachin
120
41
  *
121
42
  * Both share `.code`, `.message`, `.details`, and extend `Error`.
122
43
  */
123
- type ProvisioningFlowError = CapxulError | CapxulError$1;
44
+ type ProvisioningFlowError = CapxulError$1 | CapxulError;
124
45
  type ProvisioningFlowContext = {
125
46
  readonly input: AccountProvisionPersonalInput | null;
126
47
  readonly account: Account | null;
@@ -197,7 +118,7 @@ declare function createProvisioningMachine(client: CapxulClient): xstate.StateMa
197
118
  }, {
198
119
  type: "hasInput";
199
120
  params: unknown;
200
- }, never, "idle" | "error" | "done" | "starting" | "running", string, {
121
+ }, never, "done" | "error" | "idle" | "starting" | "running", string, {
201
122
  readonly input: AccountProvisionPersonalInput;
202
123
  }, {
203
124
  readonly account: Account;
@@ -227,7 +148,7 @@ declare function createProvisioningMachine(client: CapxulClient): xstate.StateMa
227
148
  *
228
149
  * Both share `.code`, `.message`, `.details`, and extend `Error`.
229
150
  */
230
- type OnboardingFlowError = CapxulError | CapxulError$1;
151
+ type OnboardingFlowError = CapxulError$1 | CapxulError;
231
152
  /** Subjects supported by the onboarding flow. */
232
153
  type OnboardingSubjectKind = "account" | "organization";
233
154
  /**
@@ -305,7 +226,7 @@ declare function createOnboardingFlowMachine(client: CapxulClient): xstate.State
305
226
  }, {
306
227
  type: "hasInput";
307
228
  params: unknown;
308
- }, never, "idle" | "error" | "done" | "starting" | "running", string, {
229
+ }, never, "done" | "error" | "idle" | "starting" | "running", string, {
309
230
  readonly input: AccountProvisionPersonalInput;
310
231
  }, {
311
232
  readonly account: Account;
@@ -347,7 +268,7 @@ declare function createOnboardingFlowMachine(client: CapxulClient): xstate.State
347
268
  }, {
348
269
  type: "hasInput";
349
270
  params: unknown;
350
- }, never, "idle" | "error" | "done" | "starting" | "running", string, {
271
+ }, never, "done" | "error" | "idle" | "starting" | "running", string, {
351
272
  readonly input: AccountProvisionPersonalInput;
352
273
  }, {
353
274
  readonly account: Account;
@@ -440,8 +361,8 @@ declare function createOnboardingFlowMachine(client: CapxulClient): xstate.State
440
361
  * No `default:` arm needed — the compile-time exhaustiveness check is
441
362
  * the contract.
442
363
  */
443
- declare function matchError<Codes extends CapxulErrorCode, R>(err: CapxulError<Codes>, handlers: {
444
- [K in Codes]: (err: CapxulError<K>) => R;
364
+ declare function matchError<Codes extends CapxulErrorCode$1, R>(err: CapxulError$1<Codes>, handlers: {
365
+ [K in Codes]: (err: CapxulError$1<K>) => R;
445
366
  }): R;
446
367
  /**
447
368
  * Exhaustive resource-status dispatch per CANON.md §4.44.
@@ -497,37 +418,6 @@ declare function tryCatch<T>(promise: Promise<T>): Promise<[Error, null] | [null
497
418
  */
498
419
  declare function createLocalSigner(privateKey: `0x${string}`): Account$1;
499
420
 
500
- /**
501
- * AuthService — unified promise-based auth surface.
502
- *
503
- * Wraps the imperative `AuthClient` tuple API with a class-based,
504
- * promise-based interface. `signOut` preserves the data-client
505
- * reference so provider-owned singletons survive sign-in/sign-out
506
- * cycles.
507
- */
508
-
509
- declare class AuthService {
510
- private authClient;
511
- private sessionStore;
512
- private config;
513
- constructor(config?: CapxulConfig);
514
- sendOtp(email: string): Promise<void>;
515
- verifyOtp(email: string, otp: string): Promise<VerifyOtpResult>;
516
- completeBootstrap(params: CompleteBootstrapInput, signer?: Account$1): Promise<CompleteBootstrapResult>;
517
- /**
518
- * Clears the persisted session and, when a transport was pre-injected,
519
- * drops the cached auth header.
520
- *
521
- * **Transport safety note:** `clearAuth()` is only invoked when
522
- * `config._transport` was supplied at construction (e.g. by the React
523
- * provider). If `AuthService` is instantiated directly in a Node/CLI
524
- * context without an injected transport, the transport-side auth cache
525
- * is the caller's responsibility.
526
- */
527
- signOut(): Promise<void>;
528
- getSession(): Promise<Session | null>;
529
- }
530
-
531
421
  type SignerProvisionResult = {
532
422
  readonly signer: Account$1;
533
423
  readonly safeAddress: `0x${string}`;
@@ -568,4 +458,4 @@ type PaymentToken = {
568
458
  */
569
459
  declare function resolvePaymentToken(currency: string): PaymentToken;
570
460
 
571
- export { Account, AccountProvisionPersonalInput, type AuthFlowContext, type AuthFlowError, type AuthFlowEvent, AuthService, CapxulClient, CapxulConfig, CapxulError, CapxulErrorCode, CompleteBootstrapInput, CompleteBootstrapResult, Email, NextAction, type OnboardingFlowContext, type OnboardingFlowError, type OnboardingFlowEvent, type OnboardingProfileInput, type OnboardingSubjectKind, OperationId, type PaymentToken, type ProvisioningFlowContext, type ProvisioningFlowError, type ProvisioningFlowEvent, type ProvisioningFlowInput, type ProvisioningFlowOutput, Session, type SignerProvisionResult, SignerProvisioner, Username, VerifyOtpResult, createAuthFlowMachine, createLocalSigner, createOnboardingFlowMachine, createProvisioningMachine as createProvisioningFlowMachine, matchAction, matchError, matchStatus, resolvePaymentToken, tryCatch };
461
+ export { Account, AccountProvisionPersonalInput, CapxulClient, CapxulError$1 as CapxulError, CapxulErrorCode$1 as CapxulErrorCode, NextAction, type OnboardingFlowContext, type OnboardingFlowError, type OnboardingFlowEvent, type OnboardingProfileInput, type OnboardingSubjectKind, OperationId, type PaymentToken, type ProvisioningFlowContext, type ProvisioningFlowError, type ProvisioningFlowEvent, type ProvisioningFlowInput, type ProvisioningFlowOutput, type SignerProvisionResult, SignerProvisioner, Username, createLocalSigner, createOnboardingFlowMachine, createProvisioningMachine as createProvisioningFlowMachine, matchAction, matchError, matchStatus, resolvePaymentToken, tryCatch };
package/dist/index.d.ts CHANGED
@@ -1,114 +1,35 @@
1
- import { S as Session, C as CapxulError$1, a as CapxulClient, A as AccountProvisionPersonalInput, b as CapxulConfig, V as VerifyOtpResult, c as CompleteBootstrapInput, d as CompleteBootstrapResult } from './client-pMBRFcsz.js';
2
- export { e as AccountsClient, f as ApiKeyCreateResult, g as ApiKeysClient, h as AuthBootstrapFlowContext, i as AuthBootstrapFlowError, j as AuthBootstrapFlowEvent, k as AuthBootstrapReason, l as AuthBootstrapToken, m as AuthClient, n as AuthSessionStore, B as BrowserCapxulConfig, o as CapxulAuthConfig, p as CapxulDataClient, q as CapxulFlowFactories, r as CapxulSigningConfig, D as DocumentsClient, E as ExternalAccountsClient, H as HttpTransport, L as LocalPrivateKeySignerProvider, M as MeClient, O as OperationsClient, s as OrgDocumentsClient, t as OrgMembersClient, u as OrgPaymentsClient, v as OrgSafesClient, w as OrgTransfersClient, x as OrgTreasuryClient, y as OrgWithdrawalsClient, z as OrganizationsClient, P as PaymentsClient, F as SubAccountsClient, T as TokenTransfer, G as TokenTransferId, I as TokenTransfersClient, J as TokenTransfersListInput, K as TokenTransfersListPage, N as TokenTransfersRetrieveInput, Q as TransfersClient, R as TransportRuntime, U as TransportState, W as VirtualAccountsClient, X as VirtualCardsClient, Y as WebhookEndpointCreateResult, Z as WebhookEndpointsClient, _ as WebhookEventsClient, $ as WithdrawalsClient, a0 as createAuthBootstrapFlowMachine, a1 as createCapxulClient, a2 as makeHttpTransport, a3 as toTokenTransferId } from './client-pMBRFcsz.js';
1
+ import { A as AccountProvisionPersonalInput, C as CapxulClient } from './client-CbUeJoM9.js';
2
+ export { a as AccountsClient, b as ApiKeyCreateResult, c as ApiKeysClient, d as AuthBootstrapReason, e as AuthBootstrapToken, f as AuthService, g as AuthSessionStore, B as BrowserCapxulConfig, h as CapxulAuthConfig, i as CapxulConfig, j as CapxulDataClient, k as CapxulFlowFactories, l as CapxulSigningConfig, m as CompleteBootstrapInput, n as CompleteBootstrapResult, D as DocumentsClient, E as ExternalAccountsClient, H as HttpTransport, L as LocalPrivateKeySignerProvider, M as MeClient, O as OperationsClient, o as OrgDocumentsClient, p as OrgMembersClient, q as OrgPaymentsClient, r as OrgSafesClient, s as OrgTransfersClient, t as OrgTreasuryClient, u as OrgWithdrawalsClient, v as OrganizationsClient, P as PaymentsClient, S as Session, w as SubAccountsClient, T as TokenTransfer, x as TokenTransferId, y as TokenTransfersClient, z as TokenTransfersListInput, F as TokenTransfersListPage, G as TokenTransfersRetrieveInput, I as TransfersClient, J as TransportRuntime, K as TransportState, V as VerifyOtpResult, N as VirtualAccountsClient, Q as VirtualCardsClient, W as WebhookEndpointCreateResult, R as WebhookEndpointsClient, U as WebhookEventsClient, X as WithdrawalsClient, Y as createCapxulClient, Z as makeHttpTransport, _ as toTokenTransferId } from './client-CbUeJoM9.js';
3
3
  import * as xstate from 'xstate';
4
- import { E as Email, U as Username, O as OperationId, N as NextAction } from './next-action-CTGl8wpy.js';
5
- export { A as AccountId, a as ApiKeyId, B as BalanceLedgerEntryId, C as CorrelationId, D as DocumentId, b as ExternalAccountId, K as KybProfileId, c as KycProfileId, M as MemberId, d as OrganizationId, P as PaymentId, e as PhoneNumber, S as SafeId, f as SubAccountId, T as TransactionIntentId, g as TransferId, h as TreasuryId, V as VirtualAccountId, i as VirtualCardId, W as WebhookEndpointId, j as WebhookEventId, k as WithdrawalId, t as toAccountId, l as toApiKeyId, m as toBalanceLedgerEntryId, n as toDocumentId, o as toEmail, p as toExternalAccountId, q as toKybProfileId, r as toKycProfileId, s as toMemberId, u as toOperationId, v as toOrganizationId, w as toPaymentId, x as toPhoneNumber, y as toSafeId, z as toSubAccountId, F as toTransferId, G as toTreasuryId, H as toUsername, I as toVirtualAccountId, J as toVirtualCardId, L as toWebhookEndpointId, Q as toWebhookEventId, R as toWithdrawalId } from './next-action-CTGl8wpy.js';
6
- import { C as CapxulError, a as CapxulErrorCode } from './errors-CwhCWGxm.js';
4
+ import { C as CapxulError$1, a as CapxulErrorCode$1 } from './errors-CwhCWGxm.js';
7
5
  export { b as CapxulErrorDetails, c as CapxulErrorEnvelope, d as CapxulResult } from './errors-CwhCWGxm.js';
8
- import { A as Account } from './types-V_D7qjxY.js';
9
- export { a as AccountLookupResult, b as ApiKey, c as ApiKeyEnvironment, d as ApiKeyType, B as BalanceLedgerEntry, e as BankStatementDocument, C as CreatePaymentResult, f as CreateTransferResult, g as CreateWithdrawalResult, D as Document, E as ExternalAccount, h as ExternalAccountKind, I as IdentityProfileBase, i as InvoiceDocument, K as KybProfile, j as KybStatus, k as KycProfile, l as KycStatus, m as KycUploadDocument, L as List, M as Member, n as MemberInviteResponse, o as MembershipStatus, p as Money, O as Operation, q as OperationStatus, r as OperationSummary, s as Organization, P as PageInfo, t as Payment, u as PaymentParty, v as PaymentStatus, w as PayrollRunDocument, x as PayrollScheduleDocument, R as ReceiptDocument, S as Safe, y as Scope, z as Settlement, F as SubAccount, G as SubAccountOwnerKind, T as TaxFormDocument, H as TimestampIso, J as Transfer, N as TransferCustody, Q as TransferEndpoint, U as TransferFx, V as TransferStatus, W as Treasury, X as UserIdentifier, Y as VirtualAccount, Z as VirtualAccountOwnerKind, _ as VirtualCard, $ as VirtualCardLimits, a0 as VirtualCardOwnerKind, a1 as WebhookEndpoint, a2 as WebhookEvent, a3 as Withdrawal, a4 as WithdrawalStatus } from './types-V_D7qjxY.js';
6
+ import { A as Account } from './types-BD4VAQb5.js';
7
+ export { a as AccountLookupResult, b as ApiKey, c as ApiKeyEnvironment, d as ApiKeyType, B as BalanceLedgerEntry, e as BankStatementDocument, C as CreatePaymentResult, f as CreateTransferResult, g as CreateWithdrawalResult, D as Document, E as ExternalAccount, h as ExternalAccountKind, I as IdentityProfileBase, i as InvoiceDocument, K as KybProfile, j as KybStatus, k as KycProfile, l as KycStatus, m as KycUploadDocument, L as List, M as Member, n as MemberInviteResponse, o as MembershipStatus, p as Money, O as Operation, q as OperationStatus, r as OperationSummary, s as Organization, P as PageInfo, t as Payment, u as PaymentParty, v as PaymentStatus, w as PayrollRunDocument, x as PayrollScheduleDocument, R as ReceiptDocument, S as Safe, y as Scope, z as Settlement, F as SubAccount, G as SubAccountOwnerKind, T as TaxFormDocument, H as TimestampIso, J as Transfer, N as TransferCustody, Q as TransferEndpoint, U as TransferFx, V as TransferStatus, W as Treasury, X as UserIdentifier, Y as VirtualAccount, Z as VirtualAccountOwnerKind, _ as VirtualCard, $ as VirtualCardLimits, a0 as VirtualCardOwnerKind, a1 as WebhookEndpoint, a2 as WebhookEvent, a3 as Withdrawal, a4 as WithdrawalStatus } from './types-BD4VAQb5.js';
8
+ import { U as Username, O as OperationId, N as NextAction } from './next-action-CTGl8wpy.js';
9
+ export { A as AccountId, a as ApiKeyId, B as BalanceLedgerEntryId, C as CorrelationId, D as DocumentId, E as Email, b as ExternalAccountId, K as KybProfileId, c as KycProfileId, M as MemberId, d as OrganizationId, P as PaymentId, e as PhoneNumber, S as SafeId, f as SubAccountId, T as TransactionIntentId, g as TransferId, h as TreasuryId, V as VirtualAccountId, i as VirtualCardId, W as WebhookEndpointId, j as WebhookEventId, k as WithdrawalId, t as toAccountId, l as toApiKeyId, m as toBalanceLedgerEntryId, n as toDocumentId, o as toEmail, p as toExternalAccountId, q as toKybProfileId, r as toKycProfileId, s as toMemberId, u as toOperationId, v as toOrganizationId, w as toPaymentId, x as toPhoneNumber, y as toSafeId, z as toSubAccountId, F as toTransferId, G as toTreasuryId, H as toUsername, I as toVirtualAccountId, J as toVirtualCardId, L as toWebhookEndpointId, Q as toWebhookEventId, R as toWithdrawalId } from './next-action-CTGl8wpy.js';
10
10
  import { Account as Account$1 } from 'viem';
11
11
  export { WebhookVerificationOptions, WebhookVerificationResult, verifyWebhook } from './webhooks.js';
12
12
 
13
13
  /**
14
- * Auth flow errors may originate from two CapxulError surfaces:
15
- * - the SDK-local generic `CapxulError<Codes>` returned by
16
- * `client.auth.*` tuple methods
17
- * - the `@repo/config` `CapxulError` produced by the `Errors.xxx()`
18
- * factory family (per `error-handling.md`)
19
- *
20
- * Both share `.code`, `.message`, `.details`, and extend `Error`. The
21
- * union keeps either origin assignable to `context.error` without an
22
- * `as` cast at the call site.
23
- */
24
- type AuthFlowError = CapxulError | CapxulError$1;
25
- type AuthFlowContext = {
26
- readonly email: Email | null;
27
- readonly session: Session | null;
28
- readonly error: AuthFlowError | null;
29
- };
30
- type AuthFlowEvent = {
31
- readonly type: "REQUEST_OTP";
32
- readonly email: Email;
33
- } | {
34
- readonly type: "VERIFY";
35
- readonly code: string;
36
- } | {
37
- readonly type: "RESET";
38
- } | {
39
- readonly type: "SIGN_OUT";
40
- };
41
- /**
42
- * Build the auth state machine bound to a `CapxulClient` instance.
14
+ * Unified error type used across the entire stack: backend, SDK, and frontend.
15
+ * One class, one set of codes, one language.
43
16
  *
44
- * States: `idle -> sending_otp -> otp_requested -> verifying ->
45
- * authenticated -> signing_out -> idle`, with `error` as a sidecar
46
- * from any async step.
17
+ * Backend throws CapxulError withErrorBoundary serializes to ConvexError
18
+ * SDK deserializes back to CapxulError frontend routes on err.code.
47
19
  */
48
- declare function createAuthFlowMachine(client: CapxulClient): xstate.StateMachine<AuthFlowContext, {
49
- readonly type: "REQUEST_OTP";
50
- readonly email: Email;
51
- } | {
52
- readonly type: "VERIFY";
53
- readonly code: string;
54
- } | {
55
- readonly type: "RESET";
56
- } | {
57
- readonly type: "SIGN_OUT";
58
- }, {
59
- [x: string]: xstate.ActorRefFromLogic<xstate.PromiseActorLogic<void, {
60
- email: Email;
61
- }, xstate.EventObject>> | xstate.ActorRefFromLogic<xstate.PromiseActorLogic<Session, {
62
- email: Email;
63
- code: string;
64
- }, xstate.EventObject>> | xstate.ActorRefFromLogic<xstate.PromiseActorLogic<void, void, xstate.EventObject>> | undefined;
65
- }, {
66
- src: "sendOtp";
67
- logic: xstate.PromiseActorLogic<void, {
68
- email: Email;
69
- }, xstate.EventObject>;
70
- id: string | undefined;
71
- } | {
72
- src: "verifyOtp";
73
- logic: xstate.PromiseActorLogic<Session, {
74
- email: Email;
75
- code: string;
76
- }, xstate.EventObject>;
77
- id: string | undefined;
78
- } | {
79
- src: "signOut";
80
- logic: xstate.PromiseActorLogic<void, void, xstate.EventObject>;
81
- id: string | undefined;
82
- }, {
83
- type: "trackOtpRequested";
84
- params: unknown;
85
- } | {
86
- type: "trackOtpFailed";
87
- params: unknown;
88
- } | {
89
- type: "trackTimeoutFailed";
90
- params: unknown;
91
- } | {
92
- type: "trackVerified";
93
- params: unknown;
94
- } | {
95
- type: "identifyAndTrack";
96
- params: unknown;
97
- } | {
98
- type: "trackSignedOut";
99
- params: unknown;
100
- }, never, never, "idle" | "authenticated" | "error" | "sending_otp" | "otp_requested" | "verifying" | "signing_out", string, xstate.NonReducibleUnknown, xstate.NonReducibleUnknown, xstate.EventObject, xstate.MetaObject, {
101
- id: "auth";
102
- states: {
103
- readonly idle: {};
104
- readonly sending_otp: {};
105
- readonly otp_requested: {};
106
- readonly verifying: {};
107
- readonly authenticated: {};
108
- readonly signing_out: {};
109
- readonly error: {};
110
- };
111
- }>;
20
+ type CapxulErrorCode = "NOT_AUTHENTICATED" | "EMAIL_DELIVERY_FAILED" | "API_KEY_INVALID" | "API_KEY_EXPIRED" | "PROFILE_NOT_FOUND" | "SMART_ACCOUNT_MISSING" | "PLAYER_NOT_FOUND" | "ACCOUNT_NOT_FOUND" | "PROVIDER_ERROR" | "INVALID_INPUT" | "ENV_MISSING" | "NOT_IMPLEMENTED" | "VERIFICATION_REQUIRED" | "INSUFFICIENT_BALANCE" | "INVALID_RECIPIENT" | "TRANSACTION_FAILED" | "RATE_LIMITED" | "NETWORK_ERROR" | "PERMISSION_DENIED" | "IDEMPOTENCY_CONFLICT" | "NOT_FOUND" | "OPERATION_CANCELED" | "OPERATION_TIMEOUT" | "ACTION_REQUIRED" | "KYC_REQUIRED" | "POLICY_DENIED" | "SAFE_NOT_READY" | "PROVIDER_UNAVAILABLE" | "PROVIDER_REJECTED" | "RECONCILIATION_FAILED" | "INTERNAL_ERROR" | "QUOTE_EXPIRED" | "QUOTE_NOT_FOUND" | "INDEXER_DELIVERY_TIMEOUT" | "UNKNOWN";
21
+ declare class CapxulError extends Error {
22
+ readonly code: CapxulErrorCode;
23
+ readonly details?: Record<string, unknown>;
24
+ readonly correlationId?: string;
25
+ readonly layer?: string;
26
+ constructor(code: CapxulErrorCode, message: string, options?: {
27
+ cause?: unknown;
28
+ details?: Record<string, unknown>;
29
+ correlationId?: string;
30
+ layer?: string;
31
+ });
32
+ }
112
33
 
113
34
  /**
114
35
  * Provisioning flow errors may originate from two CapxulError surfaces:
@@ -120,7 +41,7 @@ declare function createAuthFlowMachine(client: CapxulClient): xstate.StateMachin
120
41
  *
121
42
  * Both share `.code`, `.message`, `.details`, and extend `Error`.
122
43
  */
123
- type ProvisioningFlowError = CapxulError | CapxulError$1;
44
+ type ProvisioningFlowError = CapxulError$1 | CapxulError;
124
45
  type ProvisioningFlowContext = {
125
46
  readonly input: AccountProvisionPersonalInput | null;
126
47
  readonly account: Account | null;
@@ -197,7 +118,7 @@ declare function createProvisioningMachine(client: CapxulClient): xstate.StateMa
197
118
  }, {
198
119
  type: "hasInput";
199
120
  params: unknown;
200
- }, never, "idle" | "error" | "done" | "starting" | "running", string, {
121
+ }, never, "done" | "error" | "idle" | "starting" | "running", string, {
201
122
  readonly input: AccountProvisionPersonalInput;
202
123
  }, {
203
124
  readonly account: Account;
@@ -227,7 +148,7 @@ declare function createProvisioningMachine(client: CapxulClient): xstate.StateMa
227
148
  *
228
149
  * Both share `.code`, `.message`, `.details`, and extend `Error`.
229
150
  */
230
- type OnboardingFlowError = CapxulError | CapxulError$1;
151
+ type OnboardingFlowError = CapxulError$1 | CapxulError;
231
152
  /** Subjects supported by the onboarding flow. */
232
153
  type OnboardingSubjectKind = "account" | "organization";
233
154
  /**
@@ -305,7 +226,7 @@ declare function createOnboardingFlowMachine(client: CapxulClient): xstate.State
305
226
  }, {
306
227
  type: "hasInput";
307
228
  params: unknown;
308
- }, never, "idle" | "error" | "done" | "starting" | "running", string, {
229
+ }, never, "done" | "error" | "idle" | "starting" | "running", string, {
309
230
  readonly input: AccountProvisionPersonalInput;
310
231
  }, {
311
232
  readonly account: Account;
@@ -347,7 +268,7 @@ declare function createOnboardingFlowMachine(client: CapxulClient): xstate.State
347
268
  }, {
348
269
  type: "hasInput";
349
270
  params: unknown;
350
- }, never, "idle" | "error" | "done" | "starting" | "running", string, {
271
+ }, never, "done" | "error" | "idle" | "starting" | "running", string, {
351
272
  readonly input: AccountProvisionPersonalInput;
352
273
  }, {
353
274
  readonly account: Account;
@@ -440,8 +361,8 @@ declare function createOnboardingFlowMachine(client: CapxulClient): xstate.State
440
361
  * No `default:` arm needed — the compile-time exhaustiveness check is
441
362
  * the contract.
442
363
  */
443
- declare function matchError<Codes extends CapxulErrorCode, R>(err: CapxulError<Codes>, handlers: {
444
- [K in Codes]: (err: CapxulError<K>) => R;
364
+ declare function matchError<Codes extends CapxulErrorCode$1, R>(err: CapxulError$1<Codes>, handlers: {
365
+ [K in Codes]: (err: CapxulError$1<K>) => R;
445
366
  }): R;
446
367
  /**
447
368
  * Exhaustive resource-status dispatch per CANON.md §4.44.
@@ -497,37 +418,6 @@ declare function tryCatch<T>(promise: Promise<T>): Promise<[Error, null] | [null
497
418
  */
498
419
  declare function createLocalSigner(privateKey: `0x${string}`): Account$1;
499
420
 
500
- /**
501
- * AuthService — unified promise-based auth surface.
502
- *
503
- * Wraps the imperative `AuthClient` tuple API with a class-based,
504
- * promise-based interface. `signOut` preserves the data-client
505
- * reference so provider-owned singletons survive sign-in/sign-out
506
- * cycles.
507
- */
508
-
509
- declare class AuthService {
510
- private authClient;
511
- private sessionStore;
512
- private config;
513
- constructor(config?: CapxulConfig);
514
- sendOtp(email: string): Promise<void>;
515
- verifyOtp(email: string, otp: string): Promise<VerifyOtpResult>;
516
- completeBootstrap(params: CompleteBootstrapInput, signer?: Account$1): Promise<CompleteBootstrapResult>;
517
- /**
518
- * Clears the persisted session and, when a transport was pre-injected,
519
- * drops the cached auth header.
520
- *
521
- * **Transport safety note:** `clearAuth()` is only invoked when
522
- * `config._transport` was supplied at construction (e.g. by the React
523
- * provider). If `AuthService` is instantiated directly in a Node/CLI
524
- * context without an injected transport, the transport-side auth cache
525
- * is the caller's responsibility.
526
- */
527
- signOut(): Promise<void>;
528
- getSession(): Promise<Session | null>;
529
- }
530
-
531
421
  type SignerProvisionResult = {
532
422
  readonly signer: Account$1;
533
423
  readonly safeAddress: `0x${string}`;
@@ -568,4 +458,4 @@ type PaymentToken = {
568
458
  */
569
459
  declare function resolvePaymentToken(currency: string): PaymentToken;
570
460
 
571
- export { Account, AccountProvisionPersonalInput, type AuthFlowContext, type AuthFlowError, type AuthFlowEvent, AuthService, CapxulClient, CapxulConfig, CapxulError, CapxulErrorCode, CompleteBootstrapInput, CompleteBootstrapResult, Email, NextAction, type OnboardingFlowContext, type OnboardingFlowError, type OnboardingFlowEvent, type OnboardingProfileInput, type OnboardingSubjectKind, OperationId, type PaymentToken, type ProvisioningFlowContext, type ProvisioningFlowError, type ProvisioningFlowEvent, type ProvisioningFlowInput, type ProvisioningFlowOutput, Session, type SignerProvisionResult, SignerProvisioner, Username, VerifyOtpResult, createAuthFlowMachine, createLocalSigner, createOnboardingFlowMachine, createProvisioningMachine as createProvisioningFlowMachine, matchAction, matchError, matchStatus, resolvePaymentToken, tryCatch };
461
+ export { Account, AccountProvisionPersonalInput, CapxulClient, CapxulError$1 as CapxulError, CapxulErrorCode$1 as CapxulErrorCode, NextAction, type OnboardingFlowContext, type OnboardingFlowError, type OnboardingFlowEvent, type OnboardingProfileInput, type OnboardingSubjectKind, OperationId, type PaymentToken, type ProvisioningFlowContext, type ProvisioningFlowError, type ProvisioningFlowEvent, type ProvisioningFlowInput, type ProvisioningFlowOutput, type SignerProvisionResult, SignerProvisioner, Username, createLocalSigner, createOnboardingFlowMachine, createProvisioningMachine as createProvisioningFlowMachine, matchAction, matchError, matchStatus, resolvePaymentToken, tryCatch };