@zkp2p/cash 0.4.0-rc.0 → 0.4.0-rc.2

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/AGENTS.md CHANGED
@@ -27,8 +27,10 @@ can withdraw an unmatched deposit.
27
27
  Base-USDC `cash_cashout` tool. Never pass `source` into `prepare()`.
28
28
 
29
29
  Every transaction (including approves) carries ERC-8021 attribution:
30
- `peer-cash`, then any `referrer` codes from `createCashClient` options, then
31
- the Base builder code.
30
+ `peer-cash`, then optional `peer-ref-XXXXXX` from the six-character
31
+ `referralCode`, then any analytics-only `referrer` codes, then the Base builder
32
+ code. The namespaced referral marker gives its Peer Privy wallet the direct
33
+ deposit-level integration share instead of applying maker L1/L2.
32
34
 
33
35
  **Two platform caveats, both surfaced in `capabilities()`:**
34
36
 
package/README.md CHANGED
@@ -71,6 +71,31 @@ for await (const order of cash.watch(depositId)) {
71
71
  }
72
72
  ```
73
73
 
74
+ ## Earn the integration share
75
+
76
+ Use the same six-character referral code shown in your Peer mobile or web app.
77
+ No API key, registration transaction, or separate receiving address is needed:
78
+ the referral code already belongs to your Peer Privy wallet.
79
+
80
+ ```ts
81
+ const cash = createCashClient({
82
+ environment: 'production',
83
+ referralCode: 'ABC123',
84
+ });
85
+ ```
86
+
87
+ The SDK normalizes the value and stamps `peer-ref-ABC123` into ERC-8021
88
+ attribution on the deposit transaction. When that liquidity is filled, Curator
89
+ pays the code owner 50 bps, capped by the configured Peer service fee. This is
90
+ the deposit-level integration path: it replaces the maker L1/L2 referral split
91
+ for that deposit instead of enrolling the cashing-out user as your referee.
92
+
93
+ The mapping is permanent. If you later customize your displayed Peer referral
94
+ code, open deposits carrying the old code still pay the same wallet. Include at
95
+ most one `peer-ref-XXXXXX` marker; an unknown or conflicting marker receives no
96
+ integration share. The existing `referrer` option remains available for
97
+ analytics-only ERC-8021 codes such as `acme-app`.
98
+
74
99
  Source asset path:
75
100
 
76
101
  ```ts
@@ -122,8 +147,9 @@ must execute and confirm its Relay route before preparing the Base-USDC
122
147
  cashout. After externally executing a prepared `createDeposit`, pass its
123
148
  confirmed receipt to `finalizePreparedCashout()` to recover the same
124
149
  `CashoutResult` shape as `cashout()` without importing protocol ABIs. Every
125
- Peer Cash transaction, including approves, carries ERC-8021
126
- attribution: `peer-cash` first, your own `referrer` code(s) after it.
150
+ Peer Cash transaction, including approves, carries ERC-8021 attribution:
151
+ `peer-cash` first, optional `peer-ref-XXXXXX` from `referralCode` next, and your
152
+ analytics-only `referrer` code(s) after it.
127
153
 
128
154
  ```ts
129
155
  const prepared = await cash.prepare({
@@ -87,6 +87,12 @@ var errors = {
87
87
  retryable: false,
88
88
  remediation: `Pass one or more unique currencies listed for ${platform} by capabilities().`
89
89
  }),
90
+ invalidReferralCode: () => new CashError({
91
+ code: "INVALID_REFERRAL_CODE",
92
+ message: `The Peer referral code must be exactly six letters or numbers.`,
93
+ retryable: false,
94
+ remediation: `Copy your six-character referral code from the Peer mobile or web app and pass it as referralCode.`
95
+ }),
90
96
  activeIntentBlocksWithdrawal: (depositId) => new CashError({
91
97
  code: "ACTIVE_INTENT_BLOCKS_WITHDRAWAL",
92
98
  message: `Order ${depositId} has a live buyer intent; escrow blocks withdrawal while a buyer may still deliver.`,
@@ -461,11 +461,14 @@ declare function normalizeCashPayee(platform: string, payee: CashPayeeInput): Cu
461
461
 
462
462
  /**
463
463
  * ERC-8021 attribution code stamped on every transaction this package
464
- * produces (signed and prepare paths, including approves). Integrator codes
465
- * from `CashClientOptions.referrer` are appended after it; the SDK always
466
- * appends the Base builder code last.
464
+ * produces (signed and prepare paths, including approves). The optional
465
+ * namespaced `CashClientOptions.referralCode` marker and analytics-only
466
+ * `referrer` codes follow it; the SDK appends the Base builder code last.
467
467
  */
468
468
  declare const CASH_ATTRIBUTION_CODE = "peer-cash";
469
+ declare const CASH_REFERRAL_ATTRIBUTION_PREFIX = "peer-ref-";
470
+ /** Convert a Peer referral code into its financially meaningful ERC-8021 marker. */
471
+ declare function toCashReferralAttributionCode(rawCode: string): string;
469
472
  interface CashClientOptions {
470
473
  /** `'production' | 'preproduction' | 'staging'` - selects contracts, curator, and indexer. */
471
474
  environment: RuntimeEnv;
@@ -482,8 +485,14 @@ interface CashClientOptions {
482
485
  /** Relay API configuration for source assets outside Base USDC. */
483
486
  relay?: RelayOptions;
484
487
  /**
485
- * Your own ERC-8021 attribution code(s), appended after
486
- * {@link CASH_ATTRIBUTION_CODE} on every transaction (e.g. `'acme-app'`).
488
+ * Your six-character referral code from the Peer mobile or web app. The SDK
489
+ * emits `peer-ref-XXXXXX`; when this deposit fills, Curator routes the
490
+ * integration share to the Privy wallet that owns the code.
491
+ */
492
+ referralCode?: string;
493
+ /**
494
+ * Analytics-only ERC-8021 attribution code(s), appended after the Peer Cash
495
+ * and optional integration-referral markers (e.g. `'acme-app'`).
487
496
  */
488
497
  referrer?: string | string[];
489
498
  }
@@ -693,4 +702,4 @@ interface CashClient {
693
702
  }
694
703
  declare function createCashClient(options: CashClientOptions): CashClient;
695
704
 
696
- export { createCashClient as $, type CashPayout as A, type CashPayoutPricing as B, type CashPayoutInfo as C, type CashPlatformCapability as D, type CashPreparedStepKind as E, type CashoutInput as F, type CashoutOptions as G, type CuratorPayeeDataInput as H, type IntentStatus as I, type EstimateInput as J, type EstimateOptions as K, type PreparedCashoutReceipt as L, MIN_CASHOUT_AMOUNT as M, RECOMMENDED_MIN_CASHOUT_AMOUNT as N, type OrdersOptions as O, type PrepareResult as P, type RelayOptions as Q, type RelayExecutionResult as R, type RelayQuoteInput as S, type TopUpResult as T, type RelaySourceInput as U, type RelayTransaction as V, type WithdrawResult as W, type SignerOptions as X, type WatchOptions as Y, type WithdrawOptions as Z, buildCapabilities as _, type IntentEntity as a, normalizeCashPayee as a0, type CashBuyerProfile as b, type CashDepositInput as c, type CreateDepositParamsArg as d, type CashOrder as e, type CashFill as f, type CashCapabilities as g, type CashoutResult as h, type CashEstimate as i, type CashFillStats as j, type CashPreparedStep as k, type RelayQuote as l, type RelayStatus as m, type CashSourceCapabilities as n, CASH_ATTRIBUTION_CODE as o, type CashAsset as p, type CashChain as q, type CashClient as r, type CashClientOptions as s, type CashFillEta as t, type CashLeg as u, type CashMultiCurrencyLeg as v, type CashNextAction as w, type CashOrderState as x, type CashPairFillStats as y, type CashPayeeInput as z };
705
+ export { buildCapabilities as $, type CashPayeeInput as A, type CashPayout as B, type CashPayoutInfo as C, type CashPayoutPricing as D, type CashPlatformCapability as E, type CashPreparedStepKind as F, type CashoutInput as G, type CashoutOptions as H, type IntentStatus as I, type CuratorPayeeDataInput as J, type EstimateInput as K, type EstimateOptions as L, MIN_CASHOUT_AMOUNT as M, type PreparedCashoutReceipt as N, type OrdersOptions as O, type PrepareResult as P, RECOMMENDED_MIN_CASHOUT_AMOUNT as Q, type RelayExecutionResult as R, type RelayOptions as S, type TopUpResult as T, type RelayQuoteInput as U, type RelaySourceInput as V, type WithdrawResult as W, type RelayTransaction as X, type SignerOptions as Y, type WatchOptions as Z, type WithdrawOptions as _, type IntentEntity as a, createCashClient as a0, normalizeCashPayee as a1, toCashReferralAttributionCode as a2, type CashBuyerProfile as b, type CashDepositInput as c, type CreateDepositParamsArg as d, type CashOrder as e, type CashFill as f, type CashCapabilities as g, type CashoutResult as h, type CashEstimate as i, type CashFillStats as j, type CashPreparedStep as k, type RelayQuote as l, type RelayStatus as m, type CashSourceCapabilities as n, CASH_ATTRIBUTION_CODE as o, CASH_REFERRAL_ATTRIBUTION_PREFIX as p, type CashAsset as q, type CashChain as r, type CashClient as s, type CashClientOptions as t, type CashFillEta as u, type CashLeg as v, type CashMultiCurrencyLeg as w, type CashNextAction as x, type CashOrderState as y, type CashPairFillStats as z };
@@ -461,11 +461,14 @@ declare function normalizeCashPayee(platform: string, payee: CashPayeeInput): Cu
461
461
 
462
462
  /**
463
463
  * ERC-8021 attribution code stamped on every transaction this package
464
- * produces (signed and prepare paths, including approves). Integrator codes
465
- * from `CashClientOptions.referrer` are appended after it; the SDK always
466
- * appends the Base builder code last.
464
+ * produces (signed and prepare paths, including approves). The optional
465
+ * namespaced `CashClientOptions.referralCode` marker and analytics-only
466
+ * `referrer` codes follow it; the SDK appends the Base builder code last.
467
467
  */
468
468
  declare const CASH_ATTRIBUTION_CODE = "peer-cash";
469
+ declare const CASH_REFERRAL_ATTRIBUTION_PREFIX = "peer-ref-";
470
+ /** Convert a Peer referral code into its financially meaningful ERC-8021 marker. */
471
+ declare function toCashReferralAttributionCode(rawCode: string): string;
469
472
  interface CashClientOptions {
470
473
  /** `'production' | 'preproduction' | 'staging'` - selects contracts, curator, and indexer. */
471
474
  environment: RuntimeEnv;
@@ -482,8 +485,14 @@ interface CashClientOptions {
482
485
  /** Relay API configuration for source assets outside Base USDC. */
483
486
  relay?: RelayOptions;
484
487
  /**
485
- * Your own ERC-8021 attribution code(s), appended after
486
- * {@link CASH_ATTRIBUTION_CODE} on every transaction (e.g. `'acme-app'`).
488
+ * Your six-character referral code from the Peer mobile or web app. The SDK
489
+ * emits `peer-ref-XXXXXX`; when this deposit fills, Curator routes the
490
+ * integration share to the Privy wallet that owns the code.
491
+ */
492
+ referralCode?: string;
493
+ /**
494
+ * Analytics-only ERC-8021 attribution code(s), appended after the Peer Cash
495
+ * and optional integration-referral markers (e.g. `'acme-app'`).
487
496
  */
488
497
  referrer?: string | string[];
489
498
  }
@@ -693,4 +702,4 @@ interface CashClient {
693
702
  }
694
703
  declare function createCashClient(options: CashClientOptions): CashClient;
695
704
 
696
- export { createCashClient as $, type CashPayout as A, type CashPayoutPricing as B, type CashPayoutInfo as C, type CashPlatformCapability as D, type CashPreparedStepKind as E, type CashoutInput as F, type CashoutOptions as G, type CuratorPayeeDataInput as H, type IntentStatus as I, type EstimateInput as J, type EstimateOptions as K, type PreparedCashoutReceipt as L, MIN_CASHOUT_AMOUNT as M, RECOMMENDED_MIN_CASHOUT_AMOUNT as N, type OrdersOptions as O, type PrepareResult as P, type RelayOptions as Q, type RelayExecutionResult as R, type RelayQuoteInput as S, type TopUpResult as T, type RelaySourceInput as U, type RelayTransaction as V, type WithdrawResult as W, type SignerOptions as X, type WatchOptions as Y, type WithdrawOptions as Z, buildCapabilities as _, type IntentEntity as a, normalizeCashPayee as a0, type CashBuyerProfile as b, type CashDepositInput as c, type CreateDepositParamsArg as d, type CashOrder as e, type CashFill as f, type CashCapabilities as g, type CashoutResult as h, type CashEstimate as i, type CashFillStats as j, type CashPreparedStep as k, type RelayQuote as l, type RelayStatus as m, type CashSourceCapabilities as n, CASH_ATTRIBUTION_CODE as o, type CashAsset as p, type CashChain as q, type CashClient as r, type CashClientOptions as s, type CashFillEta as t, type CashLeg as u, type CashMultiCurrencyLeg as v, type CashNextAction as w, type CashOrderState as x, type CashPairFillStats as y, type CashPayeeInput as z };
705
+ export { buildCapabilities as $, type CashPayeeInput as A, type CashPayout as B, type CashPayoutInfo as C, type CashPayoutPricing as D, type CashPlatformCapability as E, type CashPreparedStepKind as F, type CashoutInput as G, type CashoutOptions as H, type IntentStatus as I, type CuratorPayeeDataInput as J, type EstimateInput as K, type EstimateOptions as L, MIN_CASHOUT_AMOUNT as M, type PreparedCashoutReceipt as N, type OrdersOptions as O, type PrepareResult as P, RECOMMENDED_MIN_CASHOUT_AMOUNT as Q, type RelayExecutionResult as R, type RelayOptions as S, type TopUpResult as T, type RelayQuoteInput as U, type RelaySourceInput as V, type WithdrawResult as W, type RelayTransaction as X, type SignerOptions as Y, type WatchOptions as Z, type WithdrawOptions as _, type IntentEntity as a, createCashClient as a0, normalizeCashPayee as a1, toCashReferralAttributionCode as a2, type CashBuyerProfile as b, type CashDepositInput as c, type CreateDepositParamsArg as d, type CashOrder as e, type CashFill as f, type CashCapabilities as g, type CashoutResult as h, type CashEstimate as i, type CashFillStats as j, type CashPreparedStep as k, type RelayQuote as l, type RelayStatus as m, type CashSourceCapabilities as n, CASH_ATTRIBUTION_CODE as o, CASH_REFERRAL_ATTRIBUTION_PREFIX as p, type CashAsset as q, type CashChain as r, type CashClient as s, type CashClientOptions as t, type CashFillEta as u, type CashLeg as v, type CashMultiCurrencyLeg as w, type CashNextAction as x, type CashOrderState as y, type CashPairFillStats as z };
package/dist/index.cjs CHANGED
@@ -565,6 +565,12 @@ var errors = {
565
565
  retryable: false,
566
566
  remediation: `Pass one or more unique currencies listed for ${platform} by capabilities().`
567
567
  }),
568
+ invalidReferralCode: () => new CashError({
569
+ code: "INVALID_REFERRAL_CODE",
570
+ message: `The Peer referral code must be exactly six letters or numbers.`,
571
+ retryable: false,
572
+ remediation: `Copy your six-character referral code from the Peer mobile or web app and pass it as referralCode.`
573
+ }),
568
574
  activeIntentBlocksWithdrawal: (depositId) => new CashError({
569
575
  code: "ACTIVE_INTENT_BLOCKS_WITHDRAWAL",
570
576
  message: `Order ${depositId} has a live buyer intent; escrow blocks withdrawal while a buyer may still deliver.`,
@@ -1666,6 +1672,13 @@ function normalizeCashPayee(platform, payee) {
1666
1672
  var DEFAULT_RPC_URL = "https://mainnet.base.org";
1667
1673
  var FILL_STATS_CACHE_MS = 15 * 60 * 1e3;
1668
1674
  var CASH_ATTRIBUTION_CODE = "peer-cash";
1675
+ var CASH_REFERRAL_ATTRIBUTION_PREFIX = "peer-ref-";
1676
+ var PEER_REFERRAL_CODE_RE = /^[A-Z0-9]{6}$/;
1677
+ function toCashReferralAttributionCode(rawCode) {
1678
+ const code = rawCode.trim().toUpperCase();
1679
+ if (!PEER_REFERRAL_CODE_RE.test(code)) throw errors.invalidReferralCode();
1680
+ return `${CASH_REFERRAL_ATTRIBUTION_PREFIX}${code}`;
1681
+ }
1669
1682
  var DEFAULT_CURATOR_URLS = {
1670
1683
  preproduction: "https://api-preprod.zkp2p.xyz",
1671
1684
  staging: "https://api-staging.zkp2p.xyz"
@@ -1743,6 +1756,7 @@ function createCashClient(options) {
1743
1756
  const transport = options.transport ?? viem.http(options.rpcUrl ?? DEFAULT_RPC_URL);
1744
1757
  const referrerCodes = [
1745
1758
  CASH_ATTRIBUTION_CODE,
1759
+ ...options.referralCode === void 0 ? [] : [toCashReferralAttributionCode(options.referralCode)],
1746
1760
  ...options.referrer === void 0 ? [] : Array.isArray(options.referrer) ? options.referrer : [options.referrer]
1747
1761
  ];
1748
1762
  const attribution = { referrer: referrerCodes };
@@ -2865,6 +2879,7 @@ var CASH_ERROR_CODES = defineCashErrorCodes([
2865
2879
  "AMOUNT_BELOW_MINIMUM",
2866
2880
  "INVALID_INTENT_AMOUNT_RANGE",
2867
2881
  "INVALID_PAYOUT_CURRENCIES",
2882
+ "INVALID_REFERRAL_CODE",
2868
2883
  "ACTIVE_INTENT_BLOCKS_WITHDRAWAL",
2869
2884
  "NOTHING_TO_WITHDRAW",
2870
2885
  "INSUFFICIENT_AVAILABLE_FUNDS",
@@ -3352,6 +3367,7 @@ exports.BASE_USDC_ADDRESS = BASE_USDC_ADDRESS;
3352
3367
  exports.CASH_ATTRIBUTION_CODE = CASH_ATTRIBUTION_CODE;
3353
3368
  exports.CASH_ORDER_POLL_INTERVAL_MS = CASH_ORDER_POLL_INTERVAL_MS;
3354
3369
  exports.CASH_ORDER_STATUSES = CASH_ORDER_STATUSES;
3370
+ exports.CASH_REFERRAL_ATTRIBUTION_PREFIX = CASH_REFERRAL_ATTRIBUTION_PREFIX;
3355
3371
  exports.CASH_RETAIN_ON_EMPTY = CASH_RETAIN_ON_EMPTY;
3356
3372
  exports.CashError = CashError;
3357
3373
  exports.MARKET_SPREAD_BPS = MARKET_SPREAD_BPS;
@@ -3440,6 +3456,7 @@ exports.relayTransactionsJsonSchema = relayTransactionsJsonSchema;
3440
3456
  exports.resolveCashDepositId = resolveCashDepositId;
3441
3457
  exports.sourceCapabilitiesFromJson = sourceCapabilitiesFromJson;
3442
3458
  exports.sourceCapabilitiesToJson = sourceCapabilitiesToJson;
3459
+ exports.toCashReferralAttributionCode = toCashReferralAttributionCode;
3443
3460
  exports.topUpResultFromJson = topUpResultFromJson;
3444
3461
  exports.topUpResultJsonSchema = topUpResultJsonSchema;
3445
3462
  exports.topUpResultToJson = topUpResultToJson;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { I as IntentStatus, C as CashPayoutInfo, a as IntentEntity, b as CashBuyerProfile, c as CashDepositInput, d as CreateDepositParamsArg, e as CashOrder, f as CashFill, g as CashCapabilities, h as CashoutResult, i as CashEstimate, j as CashFillStats, P as PrepareResult, k as CashPreparedStep, R as RelayExecutionResult, l as RelayQuote, m as RelayStatus, n as CashSourceCapabilities, T as TopUpResult, W as WithdrawResult } from './createCashClient-DGMd8Swr.cjs';
2
- export { o as CASH_ATTRIBUTION_CODE, p as CashAsset, q as CashChain, r as CashClient, s as CashClientOptions, t as CashFillEta, u as CashLeg, v as CashMultiCurrencyLeg, w as CashNextAction, x as CashOrderState, y as CashPairFillStats, z as CashPayeeInput, A as CashPayout, B as CashPayoutPricing, D as CashPlatformCapability, E as CashPreparedStepKind, F as CashoutInput, G as CashoutOptions, H as CuratorPayeeDataInput, J as EstimateInput, K as EstimateOptions, M as MIN_CASHOUT_AMOUNT, O as OrdersOptions, L as PreparedCashoutReceipt, N as RECOMMENDED_MIN_CASHOUT_AMOUNT, Q as RelayOptions, S as RelayQuoteInput, U as RelaySourceInput, V as RelayTransaction, X as SignerOptions, Y as WatchOptions, Z as WithdrawOptions, _ as buildCapabilities, $ as createCashClient, a0 as normalizeCashPayee } from './createCashClient-DGMd8Swr.cjs';
1
+ import { I as IntentStatus, C as CashPayoutInfo, a as IntentEntity, b as CashBuyerProfile, c as CashDepositInput, d as CreateDepositParamsArg, e as CashOrder, f as CashFill, g as CashCapabilities, h as CashoutResult, i as CashEstimate, j as CashFillStats, P as PrepareResult, k as CashPreparedStep, R as RelayExecutionResult, l as RelayQuote, m as RelayStatus, n as CashSourceCapabilities, T as TopUpResult, W as WithdrawResult } from './createCashClient-D8gw-Hhv.cjs';
2
+ export { o as CASH_ATTRIBUTION_CODE, p as CASH_REFERRAL_ATTRIBUTION_PREFIX, q as CashAsset, r as CashChain, s as CashClient, t as CashClientOptions, u as CashFillEta, v as CashLeg, w as CashMultiCurrencyLeg, x as CashNextAction, y as CashOrderState, z as CashPairFillStats, A as CashPayeeInput, B as CashPayout, D as CashPayoutPricing, E as CashPlatformCapability, F as CashPreparedStepKind, G as CashoutInput, H as CashoutOptions, J as CuratorPayeeDataInput, K as EstimateInput, L as EstimateOptions, M as MIN_CASHOUT_AMOUNT, O as OrdersOptions, N as PreparedCashoutReceipt, Q as RECOMMENDED_MIN_CASHOUT_AMOUNT, S as RelayOptions, U as RelayQuoteInput, V as RelaySourceInput, X as RelayTransaction, Y as SignerOptions, Z as WatchOptions, _ as WithdrawOptions, $ as buildCapabilities, a0 as createCashClient, a1 as normalizeCashPayee, a2 as toCashReferralAttributionCode } from './createCashClient-D8gw-Hhv.cjs';
3
3
  import { PaymentMethodCatalog, CurrencyType, OracleAdapterOverrides, OnchainCurrency, Zkp2pClient, PreparedTransaction } from '@zkp2p/sdk';
4
4
  export { CurrencyType, PreparedTransaction, RuntimeEnv } from '@zkp2p/sdk';
5
5
  import { Log, Abi } from 'viem';
@@ -10,7 +10,7 @@ import '@relayprotocol/relay-sdk';
10
10
  * Typed errors - every failure carries a `code`, whether it is `retryable`,
11
11
  * and a `remediation` sentence so agents can self-drive recovery.
12
12
  */
13
- type CashErrorCode = 'ORACLE_UNSUPPORTED_CURRENCY' | 'ORACLE_READ_FAILED' | 'UNSUPPORTED_PLATFORM' | 'UNSUPPORTED_PLATFORM_CURRENCY' | 'AMOUNT_BELOW_MINIMUM' | 'INVALID_INTENT_AMOUNT_RANGE' | 'INVALID_PAYOUT_CURRENCIES' | 'ACTIVE_INTENT_BLOCKS_WITHDRAWAL' | 'NOTHING_TO_WITHDRAW' | 'INSUFFICIENT_AVAILABLE_FUNDS' | 'INSUFFICIENT_TOKEN_BALANCE' | 'ORDER_NOT_ACTIVE' | 'INVALID_DEPOSIT_ID' | 'ESCROW_PAUSED' | 'INDEXER_LAG' | 'INDEXER_UNAVAILABLE' | 'ORDER_NOT_FOUND' | 'PAYEE_REGISTRATION_FAILED' | 'PAYEE_VERIFICATION_REQUIRED' | 'SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE' | 'SOURCE_RECIPIENT_MISMATCH' | 'SOURCE_CAPABILITIES_FAILED' | 'SOURCE_QUOTE_FAILED' | 'SOURCE_NONCE_MANAGER_REQUIRED' | 'SOURCE_EXECUTION_FAILED' | 'SOURCE_STATUS_FAILED' | 'SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED' | 'SOURCE_CASHOUT_SUBMISSION_UNKNOWN' | 'SOURCE_CASHOUT_STATUS_UNKNOWN' | 'DEPOSIT_RESOLUTION_FAILED' | 'ALLOWANCE_NOT_VISIBLE' | 'SIGNER_REQUIRED' | 'SIGNER_CHAIN_MISMATCH' | 'SIGNER_CHAIN_UNAVAILABLE' | 'WATCH_TIMEOUT' | 'TRANSACTION_REJECTED' | 'TRANSACTION_FAILED' | 'TRANSACTION_SUBMISSION_UNKNOWN' | 'TRANSACTION_STATUS_UNKNOWN';
13
+ type CashErrorCode = 'ORACLE_UNSUPPORTED_CURRENCY' | 'ORACLE_READ_FAILED' | 'UNSUPPORTED_PLATFORM' | 'UNSUPPORTED_PLATFORM_CURRENCY' | 'AMOUNT_BELOW_MINIMUM' | 'INVALID_INTENT_AMOUNT_RANGE' | 'INVALID_PAYOUT_CURRENCIES' | 'INVALID_REFERRAL_CODE' | 'ACTIVE_INTENT_BLOCKS_WITHDRAWAL' | 'NOTHING_TO_WITHDRAW' | 'INSUFFICIENT_AVAILABLE_FUNDS' | 'INSUFFICIENT_TOKEN_BALANCE' | 'ORDER_NOT_ACTIVE' | 'INVALID_DEPOSIT_ID' | 'ESCROW_PAUSED' | 'INDEXER_LAG' | 'INDEXER_UNAVAILABLE' | 'ORDER_NOT_FOUND' | 'PAYEE_REGISTRATION_FAILED' | 'PAYEE_VERIFICATION_REQUIRED' | 'SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE' | 'SOURCE_RECIPIENT_MISMATCH' | 'SOURCE_CAPABILITIES_FAILED' | 'SOURCE_QUOTE_FAILED' | 'SOURCE_NONCE_MANAGER_REQUIRED' | 'SOURCE_EXECUTION_FAILED' | 'SOURCE_STATUS_FAILED' | 'SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED' | 'SOURCE_CASHOUT_SUBMISSION_UNKNOWN' | 'SOURCE_CASHOUT_STATUS_UNKNOWN' | 'DEPOSIT_RESOLUTION_FAILED' | 'ALLOWANCE_NOT_VISIBLE' | 'SIGNER_REQUIRED' | 'SIGNER_CHAIN_MISMATCH' | 'SIGNER_CHAIN_UNAVAILABLE' | 'WATCH_TIMEOUT' | 'TRANSACTION_REJECTED' | 'TRANSACTION_FAILED' | 'TRANSACTION_SUBMISSION_UNKNOWN' | 'TRANSACTION_STATUS_UNKNOWN';
14
14
  interface CashErrorShape {
15
15
  code: CashErrorCode;
16
16
  message: string;
@@ -78,6 +78,7 @@ declare const errors: {
78
78
  amountBelowMinimum: (amount: bigint, min: bigint) => CashError;
79
79
  invalidIntentAmountRange: (amount: bigint, min: bigint, max: bigint) => CashError;
80
80
  invalidPayoutCurrencies: (platform: string, reason: string) => CashError;
81
+ invalidReferralCode: () => CashError;
81
82
  activeIntentBlocksWithdrawal: (depositId: string) => CashError;
82
83
  insufficientAvailableFunds: (depositId: string, requested: bigint, available: bigint) => CashError;
83
84
  insufficientTokenBalance: (requiredAmount?: bigint) => CashError;
@@ -3184,7 +3185,7 @@ declare const cashErrorRecoveryJsonSchema: z.ZodDiscriminatedUnion<"kind", [z.Zo
3184
3185
  operation: string;
3185
3186
  }>]>;
3186
3187
  declare const cashErrorJsonSchema: z.ZodObject<{
3187
- code: z.ZodEnum<["ORACLE_UNSUPPORTED_CURRENCY", "ORACLE_READ_FAILED", "UNSUPPORTED_PLATFORM", "UNSUPPORTED_PLATFORM_CURRENCY", "AMOUNT_BELOW_MINIMUM", "INVALID_INTENT_AMOUNT_RANGE", "INVALID_PAYOUT_CURRENCIES", "ACTIVE_INTENT_BLOCKS_WITHDRAWAL", "NOTHING_TO_WITHDRAW", "INSUFFICIENT_AVAILABLE_FUNDS", "INSUFFICIENT_TOKEN_BALANCE", "ORDER_NOT_ACTIVE", "INVALID_DEPOSIT_ID", "ESCROW_PAUSED", "INDEXER_LAG", "INDEXER_UNAVAILABLE", "ORDER_NOT_FOUND", "PAYEE_REGISTRATION_FAILED", "PAYEE_VERIFICATION_REQUIRED", "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE", "SOURCE_RECIPIENT_MISMATCH", "SOURCE_CAPABILITIES_FAILED", "SOURCE_QUOTE_FAILED", "SOURCE_NONCE_MANAGER_REQUIRED", "SOURCE_EXECUTION_FAILED", "SOURCE_STATUS_FAILED", "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED", "SOURCE_CASHOUT_SUBMISSION_UNKNOWN", "SOURCE_CASHOUT_STATUS_UNKNOWN", "DEPOSIT_RESOLUTION_FAILED", "ALLOWANCE_NOT_VISIBLE", "SIGNER_REQUIRED", "SIGNER_CHAIN_MISMATCH", "SIGNER_CHAIN_UNAVAILABLE", "WATCH_TIMEOUT", "TRANSACTION_REJECTED", "TRANSACTION_FAILED", "TRANSACTION_SUBMISSION_UNKNOWN", "TRANSACTION_STATUS_UNKNOWN"]>;
3188
+ code: z.ZodEnum<["ORACLE_UNSUPPORTED_CURRENCY", "ORACLE_READ_FAILED", "UNSUPPORTED_PLATFORM", "UNSUPPORTED_PLATFORM_CURRENCY", "AMOUNT_BELOW_MINIMUM", "INVALID_INTENT_AMOUNT_RANGE", "INVALID_PAYOUT_CURRENCIES", "INVALID_REFERRAL_CODE", "ACTIVE_INTENT_BLOCKS_WITHDRAWAL", "NOTHING_TO_WITHDRAW", "INSUFFICIENT_AVAILABLE_FUNDS", "INSUFFICIENT_TOKEN_BALANCE", "ORDER_NOT_ACTIVE", "INVALID_DEPOSIT_ID", "ESCROW_PAUSED", "INDEXER_LAG", "INDEXER_UNAVAILABLE", "ORDER_NOT_FOUND", "PAYEE_REGISTRATION_FAILED", "PAYEE_VERIFICATION_REQUIRED", "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE", "SOURCE_RECIPIENT_MISMATCH", "SOURCE_CAPABILITIES_FAILED", "SOURCE_QUOTE_FAILED", "SOURCE_NONCE_MANAGER_REQUIRED", "SOURCE_EXECUTION_FAILED", "SOURCE_STATUS_FAILED", "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED", "SOURCE_CASHOUT_SUBMISSION_UNKNOWN", "SOURCE_CASHOUT_STATUS_UNKNOWN", "DEPOSIT_RESOLUTION_FAILED", "ALLOWANCE_NOT_VISIBLE", "SIGNER_REQUIRED", "SIGNER_CHAIN_MISMATCH", "SIGNER_CHAIN_UNAVAILABLE", "WATCH_TIMEOUT", "TRANSACTION_REJECTED", "TRANSACTION_FAILED", "TRANSACTION_SUBMISSION_UNKNOWN", "TRANSACTION_STATUS_UNKNOWN"]>;
3188
3189
  message: z.ZodString;
3189
3190
  retryable: z.ZodBoolean;
3190
3191
  remediation: z.ZodString;
@@ -3571,7 +3572,7 @@ declare const cashErrorJsonSchema: z.ZodObject<{
3571
3572
  }>]>>;
3572
3573
  }, "strict", z.ZodTypeAny, {
3573
3574
  message: string;
3574
- code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "ACTIVE_INTENT_BLOCKS_WITHDRAWAL" | "NOTHING_TO_WITHDRAW" | "INSUFFICIENT_AVAILABLE_FUNDS" | "INSUFFICIENT_TOKEN_BALANCE" | "ORDER_NOT_ACTIVE" | "INVALID_DEPOSIT_ID" | "ESCROW_PAUSED" | "INDEXER_LAG" | "INDEXER_UNAVAILABLE" | "ORDER_NOT_FOUND" | "PAYEE_REGISTRATION_FAILED" | "PAYEE_VERIFICATION_REQUIRED" | "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE" | "SOURCE_RECIPIENT_MISMATCH" | "SOURCE_CAPABILITIES_FAILED" | "SOURCE_QUOTE_FAILED" | "SOURCE_NONCE_MANAGER_REQUIRED" | "SOURCE_EXECUTION_FAILED" | "SOURCE_STATUS_FAILED" | "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED" | "SOURCE_CASHOUT_SUBMISSION_UNKNOWN" | "SOURCE_CASHOUT_STATUS_UNKNOWN" | "DEPOSIT_RESOLUTION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
3575
+ code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_REFERRAL_CODE" | "ACTIVE_INTENT_BLOCKS_WITHDRAWAL" | "NOTHING_TO_WITHDRAW" | "INSUFFICIENT_AVAILABLE_FUNDS" | "INSUFFICIENT_TOKEN_BALANCE" | "ORDER_NOT_ACTIVE" | "INVALID_DEPOSIT_ID" | "ESCROW_PAUSED" | "INDEXER_LAG" | "INDEXER_UNAVAILABLE" | "ORDER_NOT_FOUND" | "PAYEE_REGISTRATION_FAILED" | "PAYEE_VERIFICATION_REQUIRED" | "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE" | "SOURCE_RECIPIENT_MISMATCH" | "SOURCE_CAPABILITIES_FAILED" | "SOURCE_QUOTE_FAILED" | "SOURCE_NONCE_MANAGER_REQUIRED" | "SOURCE_EXECUTION_FAILED" | "SOURCE_STATUS_FAILED" | "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED" | "SOURCE_CASHOUT_SUBMISSION_UNKNOWN" | "SOURCE_CASHOUT_STATUS_UNKNOWN" | "DEPOSIT_RESOLUTION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
3575
3576
  retryable: boolean;
3576
3577
  remediation: string;
3577
3578
  recovery?: {
@@ -3653,7 +3654,7 @@ declare const cashErrorJsonSchema: z.ZodObject<{
3653
3654
  } | undefined;
3654
3655
  }, {
3655
3656
  message: string;
3656
- code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "ACTIVE_INTENT_BLOCKS_WITHDRAWAL" | "NOTHING_TO_WITHDRAW" | "INSUFFICIENT_AVAILABLE_FUNDS" | "INSUFFICIENT_TOKEN_BALANCE" | "ORDER_NOT_ACTIVE" | "INVALID_DEPOSIT_ID" | "ESCROW_PAUSED" | "INDEXER_LAG" | "INDEXER_UNAVAILABLE" | "ORDER_NOT_FOUND" | "PAYEE_REGISTRATION_FAILED" | "PAYEE_VERIFICATION_REQUIRED" | "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE" | "SOURCE_RECIPIENT_MISMATCH" | "SOURCE_CAPABILITIES_FAILED" | "SOURCE_QUOTE_FAILED" | "SOURCE_NONCE_MANAGER_REQUIRED" | "SOURCE_EXECUTION_FAILED" | "SOURCE_STATUS_FAILED" | "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED" | "SOURCE_CASHOUT_SUBMISSION_UNKNOWN" | "SOURCE_CASHOUT_STATUS_UNKNOWN" | "DEPOSIT_RESOLUTION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
3657
+ code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_REFERRAL_CODE" | "ACTIVE_INTENT_BLOCKS_WITHDRAWAL" | "NOTHING_TO_WITHDRAW" | "INSUFFICIENT_AVAILABLE_FUNDS" | "INSUFFICIENT_TOKEN_BALANCE" | "ORDER_NOT_ACTIVE" | "INVALID_DEPOSIT_ID" | "ESCROW_PAUSED" | "INDEXER_LAG" | "INDEXER_UNAVAILABLE" | "ORDER_NOT_FOUND" | "PAYEE_REGISTRATION_FAILED" | "PAYEE_VERIFICATION_REQUIRED" | "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE" | "SOURCE_RECIPIENT_MISMATCH" | "SOURCE_CAPABILITIES_FAILED" | "SOURCE_QUOTE_FAILED" | "SOURCE_NONCE_MANAGER_REQUIRED" | "SOURCE_EXECUTION_FAILED" | "SOURCE_STATUS_FAILED" | "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED" | "SOURCE_CASHOUT_SUBMISSION_UNKNOWN" | "SOURCE_CASHOUT_STATUS_UNKNOWN" | "DEPOSIT_RESOLUTION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
3657
3658
  retryable: boolean;
3658
3659
  remediation: string;
3659
3660
  recovery?: {
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { I as IntentStatus, C as CashPayoutInfo, a as IntentEntity, b as CashBuyerProfile, c as CashDepositInput, d as CreateDepositParamsArg, e as CashOrder, f as CashFill, g as CashCapabilities, h as CashoutResult, i as CashEstimate, j as CashFillStats, P as PrepareResult, k as CashPreparedStep, R as RelayExecutionResult, l as RelayQuote, m as RelayStatus, n as CashSourceCapabilities, T as TopUpResult, W as WithdrawResult } from './createCashClient-DGMd8Swr.js';
2
- export { o as CASH_ATTRIBUTION_CODE, p as CashAsset, q as CashChain, r as CashClient, s as CashClientOptions, t as CashFillEta, u as CashLeg, v as CashMultiCurrencyLeg, w as CashNextAction, x as CashOrderState, y as CashPairFillStats, z as CashPayeeInput, A as CashPayout, B as CashPayoutPricing, D as CashPlatformCapability, E as CashPreparedStepKind, F as CashoutInput, G as CashoutOptions, H as CuratorPayeeDataInput, J as EstimateInput, K as EstimateOptions, M as MIN_CASHOUT_AMOUNT, O as OrdersOptions, L as PreparedCashoutReceipt, N as RECOMMENDED_MIN_CASHOUT_AMOUNT, Q as RelayOptions, S as RelayQuoteInput, U as RelaySourceInput, V as RelayTransaction, X as SignerOptions, Y as WatchOptions, Z as WithdrawOptions, _ as buildCapabilities, $ as createCashClient, a0 as normalizeCashPayee } from './createCashClient-DGMd8Swr.js';
1
+ import { I as IntentStatus, C as CashPayoutInfo, a as IntentEntity, b as CashBuyerProfile, c as CashDepositInput, d as CreateDepositParamsArg, e as CashOrder, f as CashFill, g as CashCapabilities, h as CashoutResult, i as CashEstimate, j as CashFillStats, P as PrepareResult, k as CashPreparedStep, R as RelayExecutionResult, l as RelayQuote, m as RelayStatus, n as CashSourceCapabilities, T as TopUpResult, W as WithdrawResult } from './createCashClient-D8gw-Hhv.js';
2
+ export { o as CASH_ATTRIBUTION_CODE, p as CASH_REFERRAL_ATTRIBUTION_PREFIX, q as CashAsset, r as CashChain, s as CashClient, t as CashClientOptions, u as CashFillEta, v as CashLeg, w as CashMultiCurrencyLeg, x as CashNextAction, y as CashOrderState, z as CashPairFillStats, A as CashPayeeInput, B as CashPayout, D as CashPayoutPricing, E as CashPlatformCapability, F as CashPreparedStepKind, G as CashoutInput, H as CashoutOptions, J as CuratorPayeeDataInput, K as EstimateInput, L as EstimateOptions, M as MIN_CASHOUT_AMOUNT, O as OrdersOptions, N as PreparedCashoutReceipt, Q as RECOMMENDED_MIN_CASHOUT_AMOUNT, S as RelayOptions, U as RelayQuoteInput, V as RelaySourceInput, X as RelayTransaction, Y as SignerOptions, Z as WatchOptions, _ as WithdrawOptions, $ as buildCapabilities, a0 as createCashClient, a1 as normalizeCashPayee, a2 as toCashReferralAttributionCode } from './createCashClient-D8gw-Hhv.js';
3
3
  import { PaymentMethodCatalog, CurrencyType, OracleAdapterOverrides, OnchainCurrency, Zkp2pClient, PreparedTransaction } from '@zkp2p/sdk';
4
4
  export { CurrencyType, PreparedTransaction, RuntimeEnv } from '@zkp2p/sdk';
5
5
  import { Log, Abi } from 'viem';
@@ -10,7 +10,7 @@ import '@relayprotocol/relay-sdk';
10
10
  * Typed errors - every failure carries a `code`, whether it is `retryable`,
11
11
  * and a `remediation` sentence so agents can self-drive recovery.
12
12
  */
13
- type CashErrorCode = 'ORACLE_UNSUPPORTED_CURRENCY' | 'ORACLE_READ_FAILED' | 'UNSUPPORTED_PLATFORM' | 'UNSUPPORTED_PLATFORM_CURRENCY' | 'AMOUNT_BELOW_MINIMUM' | 'INVALID_INTENT_AMOUNT_RANGE' | 'INVALID_PAYOUT_CURRENCIES' | 'ACTIVE_INTENT_BLOCKS_WITHDRAWAL' | 'NOTHING_TO_WITHDRAW' | 'INSUFFICIENT_AVAILABLE_FUNDS' | 'INSUFFICIENT_TOKEN_BALANCE' | 'ORDER_NOT_ACTIVE' | 'INVALID_DEPOSIT_ID' | 'ESCROW_PAUSED' | 'INDEXER_LAG' | 'INDEXER_UNAVAILABLE' | 'ORDER_NOT_FOUND' | 'PAYEE_REGISTRATION_FAILED' | 'PAYEE_VERIFICATION_REQUIRED' | 'SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE' | 'SOURCE_RECIPIENT_MISMATCH' | 'SOURCE_CAPABILITIES_FAILED' | 'SOURCE_QUOTE_FAILED' | 'SOURCE_NONCE_MANAGER_REQUIRED' | 'SOURCE_EXECUTION_FAILED' | 'SOURCE_STATUS_FAILED' | 'SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED' | 'SOURCE_CASHOUT_SUBMISSION_UNKNOWN' | 'SOURCE_CASHOUT_STATUS_UNKNOWN' | 'DEPOSIT_RESOLUTION_FAILED' | 'ALLOWANCE_NOT_VISIBLE' | 'SIGNER_REQUIRED' | 'SIGNER_CHAIN_MISMATCH' | 'SIGNER_CHAIN_UNAVAILABLE' | 'WATCH_TIMEOUT' | 'TRANSACTION_REJECTED' | 'TRANSACTION_FAILED' | 'TRANSACTION_SUBMISSION_UNKNOWN' | 'TRANSACTION_STATUS_UNKNOWN';
13
+ type CashErrorCode = 'ORACLE_UNSUPPORTED_CURRENCY' | 'ORACLE_READ_FAILED' | 'UNSUPPORTED_PLATFORM' | 'UNSUPPORTED_PLATFORM_CURRENCY' | 'AMOUNT_BELOW_MINIMUM' | 'INVALID_INTENT_AMOUNT_RANGE' | 'INVALID_PAYOUT_CURRENCIES' | 'INVALID_REFERRAL_CODE' | 'ACTIVE_INTENT_BLOCKS_WITHDRAWAL' | 'NOTHING_TO_WITHDRAW' | 'INSUFFICIENT_AVAILABLE_FUNDS' | 'INSUFFICIENT_TOKEN_BALANCE' | 'ORDER_NOT_ACTIVE' | 'INVALID_DEPOSIT_ID' | 'ESCROW_PAUSED' | 'INDEXER_LAG' | 'INDEXER_UNAVAILABLE' | 'ORDER_NOT_FOUND' | 'PAYEE_REGISTRATION_FAILED' | 'PAYEE_VERIFICATION_REQUIRED' | 'SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE' | 'SOURCE_RECIPIENT_MISMATCH' | 'SOURCE_CAPABILITIES_FAILED' | 'SOURCE_QUOTE_FAILED' | 'SOURCE_NONCE_MANAGER_REQUIRED' | 'SOURCE_EXECUTION_FAILED' | 'SOURCE_STATUS_FAILED' | 'SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED' | 'SOURCE_CASHOUT_SUBMISSION_UNKNOWN' | 'SOURCE_CASHOUT_STATUS_UNKNOWN' | 'DEPOSIT_RESOLUTION_FAILED' | 'ALLOWANCE_NOT_VISIBLE' | 'SIGNER_REQUIRED' | 'SIGNER_CHAIN_MISMATCH' | 'SIGNER_CHAIN_UNAVAILABLE' | 'WATCH_TIMEOUT' | 'TRANSACTION_REJECTED' | 'TRANSACTION_FAILED' | 'TRANSACTION_SUBMISSION_UNKNOWN' | 'TRANSACTION_STATUS_UNKNOWN';
14
14
  interface CashErrorShape {
15
15
  code: CashErrorCode;
16
16
  message: string;
@@ -78,6 +78,7 @@ declare const errors: {
78
78
  amountBelowMinimum: (amount: bigint, min: bigint) => CashError;
79
79
  invalidIntentAmountRange: (amount: bigint, min: bigint, max: bigint) => CashError;
80
80
  invalidPayoutCurrencies: (platform: string, reason: string) => CashError;
81
+ invalidReferralCode: () => CashError;
81
82
  activeIntentBlocksWithdrawal: (depositId: string) => CashError;
82
83
  insufficientAvailableFunds: (depositId: string, requested: bigint, available: bigint) => CashError;
83
84
  insufficientTokenBalance: (requiredAmount?: bigint) => CashError;
@@ -3184,7 +3185,7 @@ declare const cashErrorRecoveryJsonSchema: z.ZodDiscriminatedUnion<"kind", [z.Zo
3184
3185
  operation: string;
3185
3186
  }>]>;
3186
3187
  declare const cashErrorJsonSchema: z.ZodObject<{
3187
- code: z.ZodEnum<["ORACLE_UNSUPPORTED_CURRENCY", "ORACLE_READ_FAILED", "UNSUPPORTED_PLATFORM", "UNSUPPORTED_PLATFORM_CURRENCY", "AMOUNT_BELOW_MINIMUM", "INVALID_INTENT_AMOUNT_RANGE", "INVALID_PAYOUT_CURRENCIES", "ACTIVE_INTENT_BLOCKS_WITHDRAWAL", "NOTHING_TO_WITHDRAW", "INSUFFICIENT_AVAILABLE_FUNDS", "INSUFFICIENT_TOKEN_BALANCE", "ORDER_NOT_ACTIVE", "INVALID_DEPOSIT_ID", "ESCROW_PAUSED", "INDEXER_LAG", "INDEXER_UNAVAILABLE", "ORDER_NOT_FOUND", "PAYEE_REGISTRATION_FAILED", "PAYEE_VERIFICATION_REQUIRED", "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE", "SOURCE_RECIPIENT_MISMATCH", "SOURCE_CAPABILITIES_FAILED", "SOURCE_QUOTE_FAILED", "SOURCE_NONCE_MANAGER_REQUIRED", "SOURCE_EXECUTION_FAILED", "SOURCE_STATUS_FAILED", "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED", "SOURCE_CASHOUT_SUBMISSION_UNKNOWN", "SOURCE_CASHOUT_STATUS_UNKNOWN", "DEPOSIT_RESOLUTION_FAILED", "ALLOWANCE_NOT_VISIBLE", "SIGNER_REQUIRED", "SIGNER_CHAIN_MISMATCH", "SIGNER_CHAIN_UNAVAILABLE", "WATCH_TIMEOUT", "TRANSACTION_REJECTED", "TRANSACTION_FAILED", "TRANSACTION_SUBMISSION_UNKNOWN", "TRANSACTION_STATUS_UNKNOWN"]>;
3188
+ code: z.ZodEnum<["ORACLE_UNSUPPORTED_CURRENCY", "ORACLE_READ_FAILED", "UNSUPPORTED_PLATFORM", "UNSUPPORTED_PLATFORM_CURRENCY", "AMOUNT_BELOW_MINIMUM", "INVALID_INTENT_AMOUNT_RANGE", "INVALID_PAYOUT_CURRENCIES", "INVALID_REFERRAL_CODE", "ACTIVE_INTENT_BLOCKS_WITHDRAWAL", "NOTHING_TO_WITHDRAW", "INSUFFICIENT_AVAILABLE_FUNDS", "INSUFFICIENT_TOKEN_BALANCE", "ORDER_NOT_ACTIVE", "INVALID_DEPOSIT_ID", "ESCROW_PAUSED", "INDEXER_LAG", "INDEXER_UNAVAILABLE", "ORDER_NOT_FOUND", "PAYEE_REGISTRATION_FAILED", "PAYEE_VERIFICATION_REQUIRED", "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE", "SOURCE_RECIPIENT_MISMATCH", "SOURCE_CAPABILITIES_FAILED", "SOURCE_QUOTE_FAILED", "SOURCE_NONCE_MANAGER_REQUIRED", "SOURCE_EXECUTION_FAILED", "SOURCE_STATUS_FAILED", "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED", "SOURCE_CASHOUT_SUBMISSION_UNKNOWN", "SOURCE_CASHOUT_STATUS_UNKNOWN", "DEPOSIT_RESOLUTION_FAILED", "ALLOWANCE_NOT_VISIBLE", "SIGNER_REQUIRED", "SIGNER_CHAIN_MISMATCH", "SIGNER_CHAIN_UNAVAILABLE", "WATCH_TIMEOUT", "TRANSACTION_REJECTED", "TRANSACTION_FAILED", "TRANSACTION_SUBMISSION_UNKNOWN", "TRANSACTION_STATUS_UNKNOWN"]>;
3188
3189
  message: z.ZodString;
3189
3190
  retryable: z.ZodBoolean;
3190
3191
  remediation: z.ZodString;
@@ -3571,7 +3572,7 @@ declare const cashErrorJsonSchema: z.ZodObject<{
3571
3572
  }>]>>;
3572
3573
  }, "strict", z.ZodTypeAny, {
3573
3574
  message: string;
3574
- code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "ACTIVE_INTENT_BLOCKS_WITHDRAWAL" | "NOTHING_TO_WITHDRAW" | "INSUFFICIENT_AVAILABLE_FUNDS" | "INSUFFICIENT_TOKEN_BALANCE" | "ORDER_NOT_ACTIVE" | "INVALID_DEPOSIT_ID" | "ESCROW_PAUSED" | "INDEXER_LAG" | "INDEXER_UNAVAILABLE" | "ORDER_NOT_FOUND" | "PAYEE_REGISTRATION_FAILED" | "PAYEE_VERIFICATION_REQUIRED" | "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE" | "SOURCE_RECIPIENT_MISMATCH" | "SOURCE_CAPABILITIES_FAILED" | "SOURCE_QUOTE_FAILED" | "SOURCE_NONCE_MANAGER_REQUIRED" | "SOURCE_EXECUTION_FAILED" | "SOURCE_STATUS_FAILED" | "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED" | "SOURCE_CASHOUT_SUBMISSION_UNKNOWN" | "SOURCE_CASHOUT_STATUS_UNKNOWN" | "DEPOSIT_RESOLUTION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
3575
+ code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_REFERRAL_CODE" | "ACTIVE_INTENT_BLOCKS_WITHDRAWAL" | "NOTHING_TO_WITHDRAW" | "INSUFFICIENT_AVAILABLE_FUNDS" | "INSUFFICIENT_TOKEN_BALANCE" | "ORDER_NOT_ACTIVE" | "INVALID_DEPOSIT_ID" | "ESCROW_PAUSED" | "INDEXER_LAG" | "INDEXER_UNAVAILABLE" | "ORDER_NOT_FOUND" | "PAYEE_REGISTRATION_FAILED" | "PAYEE_VERIFICATION_REQUIRED" | "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE" | "SOURCE_RECIPIENT_MISMATCH" | "SOURCE_CAPABILITIES_FAILED" | "SOURCE_QUOTE_FAILED" | "SOURCE_NONCE_MANAGER_REQUIRED" | "SOURCE_EXECUTION_FAILED" | "SOURCE_STATUS_FAILED" | "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED" | "SOURCE_CASHOUT_SUBMISSION_UNKNOWN" | "SOURCE_CASHOUT_STATUS_UNKNOWN" | "DEPOSIT_RESOLUTION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
3575
3576
  retryable: boolean;
3576
3577
  remediation: string;
3577
3578
  recovery?: {
@@ -3653,7 +3654,7 @@ declare const cashErrorJsonSchema: z.ZodObject<{
3653
3654
  } | undefined;
3654
3655
  }, {
3655
3656
  message: string;
3656
- code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "ACTIVE_INTENT_BLOCKS_WITHDRAWAL" | "NOTHING_TO_WITHDRAW" | "INSUFFICIENT_AVAILABLE_FUNDS" | "INSUFFICIENT_TOKEN_BALANCE" | "ORDER_NOT_ACTIVE" | "INVALID_DEPOSIT_ID" | "ESCROW_PAUSED" | "INDEXER_LAG" | "INDEXER_UNAVAILABLE" | "ORDER_NOT_FOUND" | "PAYEE_REGISTRATION_FAILED" | "PAYEE_VERIFICATION_REQUIRED" | "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE" | "SOURCE_RECIPIENT_MISMATCH" | "SOURCE_CAPABILITIES_FAILED" | "SOURCE_QUOTE_FAILED" | "SOURCE_NONCE_MANAGER_REQUIRED" | "SOURCE_EXECUTION_FAILED" | "SOURCE_STATUS_FAILED" | "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED" | "SOURCE_CASHOUT_SUBMISSION_UNKNOWN" | "SOURCE_CASHOUT_STATUS_UNKNOWN" | "DEPOSIT_RESOLUTION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
3657
+ code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_REFERRAL_CODE" | "ACTIVE_INTENT_BLOCKS_WITHDRAWAL" | "NOTHING_TO_WITHDRAW" | "INSUFFICIENT_AVAILABLE_FUNDS" | "INSUFFICIENT_TOKEN_BALANCE" | "ORDER_NOT_ACTIVE" | "INVALID_DEPOSIT_ID" | "ESCROW_PAUSED" | "INDEXER_LAG" | "INDEXER_UNAVAILABLE" | "ORDER_NOT_FOUND" | "PAYEE_REGISTRATION_FAILED" | "PAYEE_VERIFICATION_REQUIRED" | "SOURCE_ROUTE_UNSUPPORTED_IN_PREPARE" | "SOURCE_RECIPIENT_MISMATCH" | "SOURCE_CAPABILITIES_FAILED" | "SOURCE_QUOTE_FAILED" | "SOURCE_NONCE_MANAGER_REQUIRED" | "SOURCE_EXECUTION_FAILED" | "SOURCE_STATUS_FAILED" | "SOURCE_ROUTE_COMPLETED_CASHOUT_FAILED" | "SOURCE_CASHOUT_SUBMISSION_UNKNOWN" | "SOURCE_CASHOUT_STATUS_UNKNOWN" | "DEPOSIT_RESOLUTION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
3657
3658
  retryable: boolean;
3658
3659
  remediation: string;
3659
3660
  recovery?: {
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { MARKET_SPREAD_BPS, ORACLE_MIN_CONVERSION_RATE_SENTINEL, CASH_RETAIN_ON_EMPTY, BASE_USDC_ADDRESS, USDC_DECIMALS, BASE_CHAIN_ID, errors, isCashError, CASH_ORDER_STATUSES, mapChainError, CashError } from './chunk-5VBP3IWK.js';
2
- export { BASE_CHAIN_ID, BASE_USDC_ADDRESS, CASH_ORDER_POLL_INTERVAL_MS, CASH_ORDER_STATUSES, CASH_RETAIN_ON_EMPTY, CashError, MARKET_SPREAD_BPS, ORACLE_MIN_CONVERSION_RATE_SENTINEL, USDC_DECIMALS, errors, isCashError, isUserRejectedError } from './chunk-5VBP3IWK.js';
1
+ import { MARKET_SPREAD_BPS, ORACLE_MIN_CONVERSION_RATE_SENTINEL, CASH_RETAIN_ON_EMPTY, BASE_USDC_ADDRESS, USDC_DECIMALS, BASE_CHAIN_ID, errors, isCashError, CASH_ORDER_STATUSES, mapChainError, CashError } from './chunk-QCRY4XPA.js';
2
+ export { BASE_CHAIN_ID, BASE_USDC_ADDRESS, CASH_ORDER_POLL_INTERVAL_MS, CASH_ORDER_STATUSES, CASH_RETAIN_ON_EMPTY, CashError, MARKET_SPREAD_BPS, ORACLE_MIN_CONVERSION_RATE_SENTINEL, USDC_DECIMALS, errors, isCashError, isUserRejectedError } from './chunk-QCRY4XPA.js';
3
3
  import { parseAbi, parseEventLogs, isAddress, http, createWalletClient, encodeFunctionData } from 'viem';
4
4
  import { base } from 'viem/chains';
5
5
  import { getSpreadOracleConfig, currencyInfo, getPaymentMethodsCatalog, getGatingServiceAddress, resolvePaymentMethodHashFromCatalog, resolvePaymentMethodNameFromHash, getCurrencyCodeFromHash, createCompositeDepositId, appendAttributionToCalldata, Zkp2pClient, CHAINLINK_ORACLE_FEEDS } from '@zkp2p/sdk';
@@ -1230,6 +1230,13 @@ function normalizeCashPayee(platform, payee) {
1230
1230
  var DEFAULT_RPC_URL = "https://mainnet.base.org";
1231
1231
  var FILL_STATS_CACHE_MS = 15 * 60 * 1e3;
1232
1232
  var CASH_ATTRIBUTION_CODE = "peer-cash";
1233
+ var CASH_REFERRAL_ATTRIBUTION_PREFIX = "peer-ref-";
1234
+ var PEER_REFERRAL_CODE_RE = /^[A-Z0-9]{6}$/;
1235
+ function toCashReferralAttributionCode(rawCode) {
1236
+ const code = rawCode.trim().toUpperCase();
1237
+ if (!PEER_REFERRAL_CODE_RE.test(code)) throw errors.invalidReferralCode();
1238
+ return `${CASH_REFERRAL_ATTRIBUTION_PREFIX}${code}`;
1239
+ }
1233
1240
  var DEFAULT_CURATOR_URLS = {
1234
1241
  preproduction: "https://api-preprod.zkp2p.xyz",
1235
1242
  staging: "https://api-staging.zkp2p.xyz"
@@ -1307,6 +1314,7 @@ function createCashClient(options) {
1307
1314
  const transport = options.transport ?? http(options.rpcUrl ?? DEFAULT_RPC_URL);
1308
1315
  const referrerCodes = [
1309
1316
  CASH_ATTRIBUTION_CODE,
1317
+ ...options.referralCode === void 0 ? [] : [toCashReferralAttributionCode(options.referralCode)],
1310
1318
  ...options.referrer === void 0 ? [] : Array.isArray(options.referrer) ? options.referrer : [options.referrer]
1311
1319
  ];
1312
1320
  const attribution = { referrer: referrerCodes };
@@ -2429,6 +2437,7 @@ var CASH_ERROR_CODES = defineCashErrorCodes([
2429
2437
  "AMOUNT_BELOW_MINIMUM",
2430
2438
  "INVALID_INTENT_AMOUNT_RANGE",
2431
2439
  "INVALID_PAYOUT_CURRENCIES",
2440
+ "INVALID_REFERRAL_CODE",
2432
2441
  "ACTIVE_INTENT_BLOCKS_WITHDRAWAL",
2433
2442
  "NOTHING_TO_WITHDRAW",
2434
2443
  "INSUFFICIENT_AVAILABLE_FUNDS",
@@ -2911,4 +2920,4 @@ function cashErrorFromJson(json) {
2911
2920
  });
2912
2921
  }
2913
2922
 
2914
- export { CASH_ATTRIBUTION_CODE, MIN_CASHOUT_AMOUNT, RATE_PRECISION, RECOMMENDED_MIN_CASHOUT_AMOUNT, bigintString, buildCapabilities, buildIntentAmountRange, buildMarketRateCurrencyOverride, buyerProfileFromJson, buyerProfileToJson, capabilitiesFromJson, capabilitiesToJson, cashAssetJsonSchema, cashBuyerProfileJsonSchema, cashCapabilitiesJsonSchema, cashChainJsonSchema, cashErrorFromJson, cashErrorJsonSchema, cashErrorRecoveryJsonSchema, cashErrorToJson, cashEstimateJsonSchema, cashFillJsonSchema, cashFillStatsJsonSchema, cashNextActionSchema, cashOrderJsonSchema, cashOrderStateSchema, cashPairFillStatsJsonSchema, cashPayoutInfoJsonSchema, cashPayoutPricingJsonSchema, cashPreparedStepJsonSchema, cashSourceCapabilitiesJsonSchema, cashoutResultFromJson, cashoutResultJsonSchema, cashoutResultToJson, centsToNumber, createCashClient, deriveBuyerProfile, deriveCashOrder, derivePayouts, estimateFromJson, estimateToJson, explainOrder, fiatFromUsdc, fiatToNumber, fillFromJson, fillStatsFromJson, fillStatsToJson, fillToJson, formatUsdc, intentStatusSchema, isFillLive, isMarketRateSupported, nonNegativeBigintString, normalizeCashPayee, orderFromJson, orderToJson, parseCompositeDepositId, prepareCashDepositParams, prepareResultFromJson, prepareResultJsonSchema, prepareResultToJson, preparedStepFromJson, preparedStepToJson, preparedTransactionJsonSchema, preparedTxFromJson, preparedTxToJson, rateToNumber, relayExecutionResultFromJson, relayExecutionResultJsonSchema, relayExecutionResultToJson, relayQuoteFromJson, relayQuoteJsonSchema, relayQuoteToJson, relayStatusFromJson, relayStatusJsonSchema, relayStatusToJson, relayTransactionJsonSchema, relayTransactionsJsonSchema, resolveCashDepositId, sourceCapabilitiesFromJson, sourceCapabilitiesToJson, topUpResultFromJson, topUpResultJsonSchema, topUpResultToJson, usdc, withExplain, withdrawResultFromJson, withdrawResultJsonSchema, withdrawResultToJson };
2923
+ export { CASH_ATTRIBUTION_CODE, CASH_REFERRAL_ATTRIBUTION_PREFIX, MIN_CASHOUT_AMOUNT, RATE_PRECISION, RECOMMENDED_MIN_CASHOUT_AMOUNT, bigintString, buildCapabilities, buildIntentAmountRange, buildMarketRateCurrencyOverride, buyerProfileFromJson, buyerProfileToJson, capabilitiesFromJson, capabilitiesToJson, cashAssetJsonSchema, cashBuyerProfileJsonSchema, cashCapabilitiesJsonSchema, cashChainJsonSchema, cashErrorFromJson, cashErrorJsonSchema, cashErrorRecoveryJsonSchema, cashErrorToJson, cashEstimateJsonSchema, cashFillJsonSchema, cashFillStatsJsonSchema, cashNextActionSchema, cashOrderJsonSchema, cashOrderStateSchema, cashPairFillStatsJsonSchema, cashPayoutInfoJsonSchema, cashPayoutPricingJsonSchema, cashPreparedStepJsonSchema, cashSourceCapabilitiesJsonSchema, cashoutResultFromJson, cashoutResultJsonSchema, cashoutResultToJson, centsToNumber, createCashClient, deriveBuyerProfile, deriveCashOrder, derivePayouts, estimateFromJson, estimateToJson, explainOrder, fiatFromUsdc, fiatToNumber, fillFromJson, fillStatsFromJson, fillStatsToJson, fillToJson, formatUsdc, intentStatusSchema, isFillLive, isMarketRateSupported, nonNegativeBigintString, normalizeCashPayee, orderFromJson, orderToJson, parseCompositeDepositId, prepareCashDepositParams, prepareResultFromJson, prepareResultJsonSchema, prepareResultToJson, preparedStepFromJson, preparedStepToJson, preparedTransactionJsonSchema, preparedTxFromJson, preparedTxToJson, rateToNumber, relayExecutionResultFromJson, relayExecutionResultJsonSchema, relayExecutionResultToJson, relayQuoteFromJson, relayQuoteJsonSchema, relayQuoteToJson, relayStatusFromJson, relayStatusJsonSchema, relayStatusToJson, relayTransactionJsonSchema, relayTransactionsJsonSchema, resolveCashDepositId, sourceCapabilitiesFromJson, sourceCapabilitiesToJson, toCashReferralAttributionCode, topUpResultFromJson, topUpResultJsonSchema, topUpResultToJson, usdc, withExplain, withdrawResultFromJson, withdrawResultJsonSchema, withdrawResultToJson };
package/dist/react.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { CurrencyType } from '@zkp2p/sdk';
2
- import { r as CashClient, J as EstimateInput, i as CashEstimate, G as CashoutOptions, h as CashoutResult, F as CashoutInput, T as TopUpResult, W as WithdrawResult, e as CashOrder } from './createCashClient-DGMd8Swr.cjs';
2
+ import { s as CashClient, K as EstimateInput, i as CashEstimate, H as CashoutOptions, h as CashoutResult, G as CashoutInput, T as TopUpResult, W as WithdrawResult, e as CashOrder } from './createCashClient-D8gw-Hhv.cjs';
3
3
  import { WalletClient } from 'viem';
4
4
  import '@relayprotocol/relay-sdk';
5
5
 
package/dist/react.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { CurrencyType } from '@zkp2p/sdk';
2
- import { r as CashClient, J as EstimateInput, i as CashEstimate, G as CashoutOptions, h as CashoutResult, F as CashoutInput, T as TopUpResult, W as WithdrawResult, e as CashOrder } from './createCashClient-DGMd8Swr.js';
2
+ import { s as CashClient, K as EstimateInput, i as CashEstimate, H as CashoutOptions, h as CashoutResult, G as CashoutInput, T as TopUpResult, W as WithdrawResult, e as CashOrder } from './createCashClient-D8gw-Hhv.js';
3
3
  import { WalletClient } from 'viem';
4
4
  import '@relayprotocol/relay-sdk';
5
5
 
package/dist/react.js CHANGED
@@ -1,4 +1,4 @@
1
- import { isCashError, CASH_ORDER_POLL_INTERVAL_MS } from './chunk-5VBP3IWK.js';
1
+ import { isCashError, CASH_ORDER_POLL_INTERVAL_MS } from './chunk-QCRY4XPA.js';
2
2
  import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
3
3
 
4
4
  function useEstimate({
package/dist/tools.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  // package.json
4
4
  var package_default = {
5
- version: "0.4.0-rc.0"};
5
+ version: "0.4.0-rc.2"};
6
6
 
7
7
  // src/tools/index.ts
8
8
  var bigintString = {
package/dist/tools.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // package.json
2
2
  var package_default = {
3
- version: "0.4.0-rc.0"};
3
+ version: "0.4.0-rc.2"};
4
4
 
5
5
  // src/tools/index.ts
6
6
  var bigintString = {
package/llms.txt CHANGED
@@ -89,5 +89,8 @@ Key facts:
89
89
  - [Engine](src/engine/): pure order-state derivation and deposit-param
90
90
  construction (no I/O)
91
91
  - [Client](src/client/createCashClient.ts): the verb facade
92
+ - Deposit integration referrals: pass the six-character Peer app code as
93
+ `createCashClient({ referralCode })`; the SDK emits `peer-ref-XXXXXX` and no
94
+ API key or referral-enrollment transaction is required.
92
95
  - [Tools manifest](src/tools/index.ts): JSON-schema definitions of the verbs
93
96
  - [Codecs](src/codecs/): zod schemas + lossless JSON round-trips
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zkp2p/cash",
3
- "version": "0.4.0-rc.0",
3
+ "version": "0.4.0-rc.2",
4
4
  "description": "Peer Cash - offramp-only SDK for routing crypto to Base USDC, then cashing out to fiat at the live oracle market rate.",
5
5
  "license": "MIT",
6
6
  "author": "Peer (https://peer.xyz)",
@@ -106,7 +106,7 @@
106
106
  },
107
107
  "dependencies": {
108
108
  "@relayprotocol/relay-sdk": "^6.1.3",
109
- "@zkp2p/sdk": "0.11.0-rc.0",
109
+ "@zkp2p/sdk": "0.11.0-rc.1",
110
110
  "zod": "^3.25.76"
111
111
  },
112
112
  "peerDependencies": {
@@ -106,8 +106,23 @@ first; use signed `cashout({ source }, { signer, sourceSigner })`, or execute
106
106
  and confirm Relay in the host before preparing a Base-USDC cashout.
107
107
  `cash_source_quote` and `cash_source_status` are quote/read tools, not a
108
108
  host-side execution path.
109
- Every protocol transaction carries ERC-8021 attribution (`peer-cash` + your
110
- `createCashClient({ referrer })` codes).
109
+ Every protocol transaction carries ERC-8021 attribution. To receive the
110
+ deposit-level integration share, copy the six-character code from your Peer
111
+ mobile or web referral screen and configure it directly:
112
+
113
+ ```ts
114
+ const cash = createCashClient({
115
+ environment: 'production',
116
+ referralCode: 'ABC123',
117
+ });
118
+ ```
119
+
120
+ The SDK emits `peer-cash`, then `peer-ref-ABC123`, then any analytics-only
121
+ `createCashClient({ referrer })` codes. No API key or referral-enrollment
122
+ transaction is required. Curator pays the eligible code owner 50 bps (capped
123
+ by the Peer service-fee budget) instead of applying the maker L1/L2 ladder for
124
+ that deposit. Use one referral code per deposit. Renaming the displayed code
125
+ later does not change the owner of an already-attributed open deposit.
111
126
 
112
127
  Wise and PayPal require an identity attestation for a new payee registration.
113
128
  Do not disable them outright: a previously registered handle can be reused