@zkp2p/cash 0.4.2 → 0.4.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/README.md +13 -1
- package/dist/{chunk-EIEGWWNX.js → chunk-ORCJKOT6.js} +38 -1
- package/dist/{createCashClient-CYSM84-K.d.cts → createCashClient-C5YKh7cv.d.cts} +6 -0
- package/dist/{createCashClient-CYSM84-K.d.ts → createCashClient-C5YKh7cv.d.ts} +6 -0
- package/dist/index.cjs +138 -4
- package/dist/index.d.cts +58 -6
- package/dist/index.d.ts +58 -6
- package/dist/index.js +103 -6
- package/dist/react.d.cts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +1 -1
- package/dist/tools.cjs +1 -1
- package/dist/tools.js +1 -1
- package/docs/lifecycle-and-recovery.md +5 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -141,8 +141,9 @@ console.log(source?.transactions?.origin, source?.transactions?.destination);
|
|
|
141
141
|
| `quoteSource(input)` / `executeSourceQuote(quote, { signer })` | Relay SDK EVM source routing into Base USDC before cashout |
|
|
142
142
|
| `relayStatus(requestId)` | Relay request status from the Relay SDK request path |
|
|
143
143
|
| `estimate({ amount, currency }, { includeEta? })` | Base USDC oracle estimate; optionally skip the historical ETA for progressive rendering |
|
|
144
|
-
| `cashout(input, { signer })` | Registers
|
|
144
|
+
| `cashout(input, { signer })` | Registers the payee and creates the order; Venmo, Cash App, and PayPal also confirm the required four-group access policy |
|
|
145
145
|
| `prepare(input)` / `finalizePreparedCashout(receipt)` | Prepare external signing, then resolve the confirmed createDeposit receipt into a resumable result |
|
|
146
|
+
| `prepareAccessPolicy(depositId)` | Prepare the required Plus, Pro, Peer Makers, and Peer Pay follow-up for an externally signed restricted-rail cash-out |
|
|
146
147
|
| `order(depositId)` / `orders(owner)` | Resume any order from its id alone; list all orders for a wallet |
|
|
147
148
|
| `watch(depositId)` | Async iterator: yields on every state change until terminal, abort, or timeout |
|
|
148
149
|
| `withdraw(depositId, { signer, amount? })` | The ONE unwind verb - partial with an `amount` (live intents don't block it), full close without (prunes expired intents first) |
|
|
@@ -164,6 +165,14 @@ Peer Cash transaction, including approves, carries ERC-8021 attribution:
|
|
|
164
165
|
`peer-cash` first, optional `peer-ref-XXXXXX` from `referralCode` next, and your
|
|
165
166
|
analytics-only `referrer` code(s) after it.
|
|
166
167
|
|
|
168
|
+
Signer-backed Venmo, Cash App, and PayPal cash-outs require one additional
|
|
169
|
+
wallet transaction after deposit creation. The SDK configures Plus, Pro, Peer
|
|
170
|
+
Makers, and Peer Pay using the canonical group IDs for the selected environment
|
|
171
|
+
and returns only after that policy transaction confirms. Its hash is available
|
|
172
|
+
as `accessPolicyTxHash`. If configuration cannot be confirmed, the SDK throws
|
|
173
|
+
`ACCESS_POLICY_CONFIGURATION_FAILED` with the already-created `depositId` and
|
|
174
|
+
exact `groupIds`; never repeat `cashout()` for that error.
|
|
175
|
+
|
|
167
176
|
```ts
|
|
168
177
|
const prepared = await cash.prepare({
|
|
169
178
|
amount: 5_000_000n,
|
|
@@ -184,6 +193,9 @@ for (const [index, transaction] of prepared.txs.entries()) {
|
|
|
184
193
|
if (!createDepositReceipt) throw new Error('createDeposit receipt missing');
|
|
185
194
|
|
|
186
195
|
const result = cash.finalizePreparedCashout(createDepositReceipt);
|
|
196
|
+
if (prepared.accessPolicyRequired) {
|
|
197
|
+
await externalRuntime.sendAndWait(cash.prepareAccessPolicy(result.depositId));
|
|
198
|
+
}
|
|
187
199
|
await persistDepositId(result.depositId);
|
|
188
200
|
const liveOrder = await cash.order(result.depositId);
|
|
189
201
|
```
|
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
// src/engine/constants.ts
|
|
2
2
|
var BASE_CHAIN_ID = 8453;
|
|
3
3
|
var BASE_USDC_ADDRESS = "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
|
|
4
|
+
var CASH_INTENT_GUARDIAN_ADDRESS = "0x83671606454fA72ba1e2831E18C5090D25629414";
|
|
5
|
+
var CASH_RESTRICTED_PLATFORMS = /* @__PURE__ */ new Set(["venmo", "cashapp", "paypal"]);
|
|
6
|
+
var CASH_ACCESS_GROUP_IDS = {
|
|
7
|
+
production: [
|
|
8
|
+
"0xb8747401b308d4891385620071b5916e9c61284f25c4611541c529703de5babf",
|
|
9
|
+
"0xf030f72e772f954059ca28f94974088aaf6ba37bb1f264df48843a3d0c221dc3",
|
|
10
|
+
"0xdf1c64c54745aa1ce00642a5874f97e3183bf5e993c1f559d0a37a4df0b803c7",
|
|
11
|
+
"0x174b8a29536721a3eae290bfd55651b85a53fc334b971d993fa93ed8dde15e48"
|
|
12
|
+
],
|
|
13
|
+
preproduction: [
|
|
14
|
+
"0xb8747401b308d4891385620071b5916e9c61284f25c4611541c529703de5babf",
|
|
15
|
+
"0xf030f72e772f954059ca28f94974088aaf6ba37bb1f264df48843a3d0c221dc3",
|
|
16
|
+
"0xdf1c64c54745aa1ce00642a5874f97e3183bf5e993c1f559d0a37a4df0b803c7",
|
|
17
|
+
"0x174b8a29536721a3eae290bfd55651b85a53fc334b971d993fa93ed8dde15e48"
|
|
18
|
+
],
|
|
19
|
+
staging: [
|
|
20
|
+
"0xf6133c227eab8ae7da1ee143945bf7f31204394f3ba801dc9691f8af6ca8efa5",
|
|
21
|
+
"0xa6beb459bc621e7b050e431736c1c3298da26356d7095719185e859d68f70d9e",
|
|
22
|
+
"0x9cded1332f25c3ee0a9a822a4c827d3fbd081a8d7b2ba39c49917ec1983b8d6c",
|
|
23
|
+
"0xc82c20c00033046a2f017b65532d7148a337282f17c73296663a530e49ba00f7"
|
|
24
|
+
]
|
|
25
|
+
};
|
|
4
26
|
var USDC_DECIMALS = 6;
|
|
5
27
|
var MARKET_SPREAD_BPS = 0;
|
|
6
28
|
var ORACLE_MIN_CONVERSION_RATE_SENTINEL = 1n;
|
|
@@ -378,6 +400,21 @@ var errors = {
|
|
|
378
400
|
},
|
|
379
401
|
{ cause }
|
|
380
402
|
),
|
|
403
|
+
accessPolicyConfigurationFailed: (depositId, groupIds, cause, transactionHash) => new CashError(
|
|
404
|
+
{
|
|
405
|
+
code: "ACCESS_POLICY_CONFIGURATION_FAILED",
|
|
406
|
+
message: `Cash-out deposit ${depositId} was created, but its required access policy was not confirmed.`,
|
|
407
|
+
retryable: false,
|
|
408
|
+
remediation: `Do not call cashout() again. Inspect the existing deposit and any access-policy transaction, then configure that deposit with recovery.groupIds through @zkp2p/sdk accessPolicy.`,
|
|
409
|
+
recovery: {
|
|
410
|
+
kind: "configure-cashout-access-policy",
|
|
411
|
+
depositId,
|
|
412
|
+
groupIds: [...groupIds],
|
|
413
|
+
...transactionHash ? { transactionHash } : {}
|
|
414
|
+
}
|
|
415
|
+
},
|
|
416
|
+
{ cause }
|
|
417
|
+
),
|
|
381
418
|
escrowPaused: () => new CashError({
|
|
382
419
|
code: "ESCROW_PAUSED",
|
|
383
420
|
message: `The escrow contract is paused; deposits are temporarily disabled.`,
|
|
@@ -445,4 +482,4 @@ function isUserRejectedError(value) {
|
|
|
445
482
|
return text.some(hasUserRejectionText);
|
|
446
483
|
}
|
|
447
484
|
|
|
448
|
-
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, mapChainError };
|
|
485
|
+
export { BASE_CHAIN_ID, BASE_USDC_ADDRESS, CASH_ACCESS_GROUP_IDS, CASH_INTENT_GUARDIAN_ADDRESS, CASH_ORDER_POLL_INTERVAL_MS, CASH_ORDER_STATUSES, CASH_RESTRICTED_PLATFORMS, CASH_RETAIN_ON_EMPTY, CashError, MARKET_SPREAD_BPS, ORACLE_MIN_CONVERSION_RATE_SENTINEL, USDC_DECIMALS, errors, isCashError, isUserRejectedError, mapChainError };
|
|
@@ -582,6 +582,8 @@ interface CashoutResult {
|
|
|
582
582
|
onchainDepositId: bigint;
|
|
583
583
|
/** Optimistic snapshot (`awaiting-buyer`); poll `order(depositId)` for live state. */
|
|
584
584
|
order: CashOrder;
|
|
585
|
+
/** Confirmed policy transaction for Venmo, Cash App, or PayPal cash-outs. */
|
|
586
|
+
accessPolicyTxHash?: Hash;
|
|
585
587
|
/** Present when `cashout()` first routed a source asset through Relay. */
|
|
586
588
|
source?: {
|
|
587
589
|
/** Conservative Base USDC amount deposited (Relay's guaranteed minimum output). */
|
|
@@ -608,6 +610,8 @@ interface PrepareResult {
|
|
|
608
610
|
register: {
|
|
609
611
|
hashedOnchainIds: string[];
|
|
610
612
|
};
|
|
613
|
+
/** Submit `prepareAccessPolicy(depositId)` after creation when true. */
|
|
614
|
+
accessPolicyRequired: boolean;
|
|
611
615
|
}
|
|
612
616
|
/** Confirmed createDeposit receipt from an externally executed prepare() plan. */
|
|
613
617
|
interface PreparedCashoutReceipt {
|
|
@@ -670,6 +674,8 @@ interface CashClient {
|
|
|
670
674
|
prepare(input: CashoutInput): Promise<PrepareResult>;
|
|
671
675
|
/** Resolve an externally executed createDeposit receipt into resumable cash-out state. */
|
|
672
676
|
finalizePreparedCashout(receipt: PreparedCashoutReceipt): CashoutResult;
|
|
677
|
+
/** Prepare the required four-group policy for an externally created cash-out. */
|
|
678
|
+
prepareAccessPolicy(depositId: string): PreparedTransaction;
|
|
673
679
|
/** 3 - Observe: resumable from `depositId` alone; no session state anywhere. */
|
|
674
680
|
order(depositId: string): Promise<CashOrder>;
|
|
675
681
|
/**
|
|
@@ -582,6 +582,8 @@ interface CashoutResult {
|
|
|
582
582
|
onchainDepositId: bigint;
|
|
583
583
|
/** Optimistic snapshot (`awaiting-buyer`); poll `order(depositId)` for live state. */
|
|
584
584
|
order: CashOrder;
|
|
585
|
+
/** Confirmed policy transaction for Venmo, Cash App, or PayPal cash-outs. */
|
|
586
|
+
accessPolicyTxHash?: Hash;
|
|
585
587
|
/** Present when `cashout()` first routed a source asset through Relay. */
|
|
586
588
|
source?: {
|
|
587
589
|
/** Conservative Base USDC amount deposited (Relay's guaranteed minimum output). */
|
|
@@ -608,6 +610,8 @@ interface PrepareResult {
|
|
|
608
610
|
register: {
|
|
609
611
|
hashedOnchainIds: string[];
|
|
610
612
|
};
|
|
613
|
+
/** Submit `prepareAccessPolicy(depositId)` after creation when true. */
|
|
614
|
+
accessPolicyRequired: boolean;
|
|
611
615
|
}
|
|
612
616
|
/** Confirmed createDeposit receipt from an externally executed prepare() plan. */
|
|
613
617
|
interface PreparedCashoutReceipt {
|
|
@@ -670,6 +674,8 @@ interface CashClient {
|
|
|
670
674
|
prepare(input: CashoutInput): Promise<PrepareResult>;
|
|
671
675
|
/** Resolve an externally executed createDeposit receipt into resumable cash-out state. */
|
|
672
676
|
finalizePreparedCashout(receipt: PreparedCashoutReceipt): CashoutResult;
|
|
677
|
+
/** Prepare the required four-group policy for an externally created cash-out. */
|
|
678
|
+
prepareAccessPolicy(depositId: string): PreparedTransaction;
|
|
673
679
|
/** 3 - Observe: resumable from `depositId` alone; no session state anywhere. */
|
|
674
680
|
order(depositId: string): Promise<CashOrder>;
|
|
675
681
|
/**
|
package/dist/index.cjs
CHANGED
|
@@ -12,6 +12,28 @@ var zod = require('zod');
|
|
|
12
12
|
// src/engine/constants.ts
|
|
13
13
|
var BASE_CHAIN_ID = 8453;
|
|
14
14
|
var BASE_USDC_ADDRESS = "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
|
|
15
|
+
var CASH_INTENT_GUARDIAN_ADDRESS = "0x83671606454fA72ba1e2831E18C5090D25629414";
|
|
16
|
+
var CASH_RESTRICTED_PLATFORMS = /* @__PURE__ */ new Set(["venmo", "cashapp", "paypal"]);
|
|
17
|
+
var CASH_ACCESS_GROUP_IDS = {
|
|
18
|
+
production: [
|
|
19
|
+
"0xb8747401b308d4891385620071b5916e9c61284f25c4611541c529703de5babf",
|
|
20
|
+
"0xf030f72e772f954059ca28f94974088aaf6ba37bb1f264df48843a3d0c221dc3",
|
|
21
|
+
"0xdf1c64c54745aa1ce00642a5874f97e3183bf5e993c1f559d0a37a4df0b803c7",
|
|
22
|
+
"0x174b8a29536721a3eae290bfd55651b85a53fc334b971d993fa93ed8dde15e48"
|
|
23
|
+
],
|
|
24
|
+
preproduction: [
|
|
25
|
+
"0xb8747401b308d4891385620071b5916e9c61284f25c4611541c529703de5babf",
|
|
26
|
+
"0xf030f72e772f954059ca28f94974088aaf6ba37bb1f264df48843a3d0c221dc3",
|
|
27
|
+
"0xdf1c64c54745aa1ce00642a5874f97e3183bf5e993c1f559d0a37a4df0b803c7",
|
|
28
|
+
"0x174b8a29536721a3eae290bfd55651b85a53fc334b971d993fa93ed8dde15e48"
|
|
29
|
+
],
|
|
30
|
+
staging: [
|
|
31
|
+
"0xf6133c227eab8ae7da1ee143945bf7f31204394f3ba801dc9691f8af6ca8efa5",
|
|
32
|
+
"0xa6beb459bc621e7b050e431736c1c3298da26356d7095719185e859d68f70d9e",
|
|
33
|
+
"0x9cded1332f25c3ee0a9a822a4c827d3fbd081a8d7b2ba39c49917ec1983b8d6c",
|
|
34
|
+
"0xc82c20c00033046a2f017b65532d7148a337282f17c73296663a530e49ba00f7"
|
|
35
|
+
]
|
|
36
|
+
};
|
|
15
37
|
var USDC_DECIMALS = 6;
|
|
16
38
|
var MARKET_SPREAD_BPS = 0;
|
|
17
39
|
var ORACLE_MIN_CONVERSION_RATE_SENTINEL = 1n;
|
|
@@ -121,6 +143,7 @@ async function prepareCashDepositParams(client, input, adapters) {
|
|
|
121
143
|
paymentMethodsOverride,
|
|
122
144
|
paymentMethodDataOverride,
|
|
123
145
|
currenciesOverride,
|
|
146
|
+
intentGuardian: CASH_INTENT_GUARDIAN_ADDRESS,
|
|
124
147
|
retainOnEmpty: CASH_RETAIN_ON_EMPTY
|
|
125
148
|
};
|
|
126
149
|
}
|
|
@@ -859,6 +882,21 @@ var errors = {
|
|
|
859
882
|
},
|
|
860
883
|
{ cause }
|
|
861
884
|
),
|
|
885
|
+
accessPolicyConfigurationFailed: (depositId, groupIds, cause, transactionHash) => new CashError(
|
|
886
|
+
{
|
|
887
|
+
code: "ACCESS_POLICY_CONFIGURATION_FAILED",
|
|
888
|
+
message: `Cash-out deposit ${depositId} was created, but its required access policy was not confirmed.`,
|
|
889
|
+
retryable: false,
|
|
890
|
+
remediation: `Do not call cashout() again. Inspect the existing deposit and any access-policy transaction, then configure that deposit with recovery.groupIds through @zkp2p/sdk accessPolicy.`,
|
|
891
|
+
recovery: {
|
|
892
|
+
kind: "configure-cashout-access-policy",
|
|
893
|
+
depositId,
|
|
894
|
+
groupIds: [...groupIds],
|
|
895
|
+
...transactionHash ? { transactionHash } : {}
|
|
896
|
+
}
|
|
897
|
+
},
|
|
898
|
+
{ cause }
|
|
899
|
+
),
|
|
862
900
|
escrowPaused: () => new CashError({
|
|
863
901
|
code: "ESCROW_PAUSED",
|
|
864
902
|
message: `The escrow contract is paused; deposits are temporarily disabled.`,
|
|
@@ -2113,6 +2151,64 @@ function createCashClient(options) {
|
|
|
2113
2151
|
if (lastNonceError) throw lastNonceError;
|
|
2114
2152
|
throw new Error(`Signer provider did not observe Relay nonce ${afterRelay - 1}`);
|
|
2115
2153
|
}
|
|
2154
|
+
async function configureCashoutAccess(client, signer, depositInput, depositId) {
|
|
2155
|
+
if (!depositInput.payouts.some(
|
|
2156
|
+
(payout) => CASH_RESTRICTED_PLATFORMS.has(payout.processorName.toLowerCase())
|
|
2157
|
+
)) {
|
|
2158
|
+
return void 0;
|
|
2159
|
+
}
|
|
2160
|
+
const groupIds = CASH_ACCESS_GROUP_IDS[environment];
|
|
2161
|
+
const prepared = prepareCashoutAccess(depositId, client);
|
|
2162
|
+
let hash;
|
|
2163
|
+
try {
|
|
2164
|
+
hash = await signer.sendTransaction({
|
|
2165
|
+
account: signer.account,
|
|
2166
|
+
chain: signer.chain,
|
|
2167
|
+
to: prepared.to,
|
|
2168
|
+
data: prepared.data,
|
|
2169
|
+
value: prepared.value
|
|
2170
|
+
});
|
|
2171
|
+
} catch (err) {
|
|
2172
|
+
throw errors.accessPolicyConfigurationFailed(depositId, groupIds, err);
|
|
2173
|
+
}
|
|
2174
|
+
let receipt;
|
|
2175
|
+
try {
|
|
2176
|
+
receipt = await client.publicClient.waitForTransactionReceipt({ hash });
|
|
2177
|
+
} catch (err) {
|
|
2178
|
+
throw errors.accessPolicyConfigurationFailed(depositId, groupIds, err, hash);
|
|
2179
|
+
}
|
|
2180
|
+
if (receipt.status === "reverted") {
|
|
2181
|
+
throw errors.accessPolicyConfigurationFailed(
|
|
2182
|
+
depositId,
|
|
2183
|
+
groupIds,
|
|
2184
|
+
errors.transactionFailed(hash),
|
|
2185
|
+
hash
|
|
2186
|
+
);
|
|
2187
|
+
}
|
|
2188
|
+
return hash;
|
|
2189
|
+
}
|
|
2190
|
+
function prepareCashoutAccess(depositId, client = readClient) {
|
|
2191
|
+
const { compositeId, escrowAddress, onchainDepositId } = parseDepositId(depositId);
|
|
2192
|
+
const groupIds = CASH_ACCESS_GROUP_IDS[environment];
|
|
2193
|
+
try {
|
|
2194
|
+
const prepared = client.accessPolicy.prepareConfigureDeposit({
|
|
2195
|
+
escrow: escrowAddress,
|
|
2196
|
+
depositId: onchainDepositId,
|
|
2197
|
+
enabled: true,
|
|
2198
|
+
groupIds,
|
|
2199
|
+
takers: [],
|
|
2200
|
+
txOverrides: attribution
|
|
2201
|
+
});
|
|
2202
|
+
return {
|
|
2203
|
+
to: prepared.to,
|
|
2204
|
+
data: prepared.data,
|
|
2205
|
+
value: prepared.value,
|
|
2206
|
+
chainId: prepared.chainId
|
|
2207
|
+
};
|
|
2208
|
+
} catch (err) {
|
|
2209
|
+
throw errors.accessPolicyConfigurationFailed(compositeId, groupIds, err);
|
|
2210
|
+
}
|
|
2211
|
+
}
|
|
2116
2212
|
return {
|
|
2117
2213
|
capabilities,
|
|
2118
2214
|
async sourceCapabilities() {
|
|
@@ -2247,6 +2343,12 @@ function createCashClient(options) {
|
|
|
2247
2343
|
const abi2 = client.escrowV2Abi ?? client.escrowAbi;
|
|
2248
2344
|
const resolved2 = resolveCashDepositId({ logs: receipt2.logs, abi: abi2 });
|
|
2249
2345
|
if (!resolved2) throw errors.depositResolutionFailed(hash2);
|
|
2346
|
+
const accessPolicyTxHash2 = await configureCashoutAccess(
|
|
2347
|
+
client,
|
|
2348
|
+
opts.signer,
|
|
2349
|
+
depositInput2,
|
|
2350
|
+
resolved2.compositeId
|
|
2351
|
+
);
|
|
2250
2352
|
const order2 = deriveCashOrder(resolved2.compositeId, [], {
|
|
2251
2353
|
remainingAmount: depositInput2.amount,
|
|
2252
2354
|
status: "ACTIVE"
|
|
@@ -2257,6 +2359,7 @@ function createCashClient(options) {
|
|
|
2257
2359
|
escrowAddress: resolved2.escrowAddress,
|
|
2258
2360
|
onchainDepositId: resolved2.onchainDepositId,
|
|
2259
2361
|
order: order2,
|
|
2362
|
+
...accessPolicyTxHash2 ? { accessPolicyTxHash: accessPolicyTxHash2 } : {},
|
|
2260
2363
|
source: routedSource
|
|
2261
2364
|
};
|
|
2262
2365
|
}
|
|
@@ -2301,6 +2404,12 @@ function createCashClient(options) {
|
|
|
2301
2404
|
const abi = client.escrowV2Abi ?? client.escrowAbi;
|
|
2302
2405
|
const resolved = resolveCashDepositId({ logs: receipt.logs, abi });
|
|
2303
2406
|
if (!resolved) throw errors.depositResolutionFailed(hash);
|
|
2407
|
+
const accessPolicyTxHash = await configureCashoutAccess(
|
|
2408
|
+
client,
|
|
2409
|
+
opts.signer,
|
|
2410
|
+
depositInput,
|
|
2411
|
+
resolved.compositeId
|
|
2412
|
+
);
|
|
2304
2413
|
const order = deriveCashOrder(resolved.compositeId, [], {
|
|
2305
2414
|
remainingAmount: depositInput.amount,
|
|
2306
2415
|
status: "ACTIVE"
|
|
@@ -2311,6 +2420,7 @@ function createCashClient(options) {
|
|
|
2311
2420
|
escrowAddress: resolved.escrowAddress,
|
|
2312
2421
|
onchainDepositId: resolved.onchainDepositId,
|
|
2313
2422
|
order,
|
|
2423
|
+
...accessPolicyTxHash ? { accessPolicyTxHash } : {},
|
|
2314
2424
|
...sourceResult ? { source: sourceResult } : {}
|
|
2315
2425
|
};
|
|
2316
2426
|
},
|
|
@@ -2348,7 +2458,10 @@ function createCashClient(options) {
|
|
|
2348
2458
|
description: "Create the protocol-held cash-out order."
|
|
2349
2459
|
}
|
|
2350
2460
|
],
|
|
2351
|
-
register: { hashedOnchainIds }
|
|
2461
|
+
register: { hashedOnchainIds },
|
|
2462
|
+
accessPolicyRequired: depositInput.payouts.some(
|
|
2463
|
+
(payout) => CASH_RESTRICTED_PLATFORMS.has(payout.processorName.toLowerCase())
|
|
2464
|
+
)
|
|
2352
2465
|
};
|
|
2353
2466
|
},
|
|
2354
2467
|
finalizePreparedCashout(receipt) {
|
|
@@ -2377,6 +2490,7 @@ function createCashClient(options) {
|
|
|
2377
2490
|
})
|
|
2378
2491
|
};
|
|
2379
2492
|
},
|
|
2493
|
+
prepareAccessPolicy: prepareCashoutAccess,
|
|
2380
2494
|
async order(depositId) {
|
|
2381
2495
|
return fetchOrder(depositId);
|
|
2382
2496
|
},
|
|
@@ -2831,6 +2945,7 @@ var cashoutResultJsonSchema = zod.z.object({
|
|
|
2831
2945
|
escrowAddress: zod.z.string(),
|
|
2832
2946
|
onchainDepositId: nonNegativeBigintString,
|
|
2833
2947
|
order: cashOrderJsonSchema,
|
|
2948
|
+
accessPolicyTxHash: zod.z.string().optional(),
|
|
2834
2949
|
source: zod.z.object({
|
|
2835
2950
|
amount: nonNegativeBigintString,
|
|
2836
2951
|
requestId: zod.z.string().optional(),
|
|
@@ -2841,7 +2956,8 @@ var cashoutResultJsonSchema = zod.z.object({
|
|
|
2841
2956
|
var prepareResultJsonSchema = zod.z.object({
|
|
2842
2957
|
txs: zod.z.array(preparedTransactionJsonSchema),
|
|
2843
2958
|
steps: zod.z.array(cashPreparedStepJsonSchema),
|
|
2844
|
-
register: zod.z.object({ hashedOnchainIds: zod.z.array(zod.z.string()) })
|
|
2959
|
+
register: zod.z.object({ hashedOnchainIds: zod.z.array(zod.z.string()) }),
|
|
2960
|
+
accessPolicyRequired: zod.z.boolean()
|
|
2845
2961
|
});
|
|
2846
2962
|
var withdrawResultJsonSchema = zod.z.object({
|
|
2847
2963
|
depositId: zod.z.string(),
|
|
@@ -2919,6 +3035,7 @@ var CASH_ERROR_CODES = defineCashErrorCodes([
|
|
|
2919
3035
|
"SOURCE_CASHOUT_SUBMISSION_UNKNOWN",
|
|
2920
3036
|
"SOURCE_CASHOUT_STATUS_UNKNOWN",
|
|
2921
3037
|
"DEPOSIT_RESOLUTION_FAILED",
|
|
3038
|
+
"ACCESS_POLICY_CONFIGURATION_FAILED",
|
|
2922
3039
|
"ALLOWANCE_NOT_VISIBLE",
|
|
2923
3040
|
"SIGNER_REQUIRED",
|
|
2924
3041
|
"SIGNER_CHAIN_MISMATCH",
|
|
@@ -2964,6 +3081,12 @@ var cashErrorRecoveryJsonSchema = zod.z.discriminatedUnion("kind", [
|
|
|
2964
3081
|
kind: zod.z.literal("inspect-base-transaction"),
|
|
2965
3082
|
transactionHash: zod.z.string(),
|
|
2966
3083
|
operation: zod.z.string()
|
|
3084
|
+
}).strict(),
|
|
3085
|
+
zod.z.object({
|
|
3086
|
+
kind: zod.z.literal("configure-cashout-access-policy"),
|
|
3087
|
+
depositId: zod.z.string(),
|
|
3088
|
+
groupIds: zod.z.array(zod.z.string()),
|
|
3089
|
+
transactionHash: zod.z.string().optional()
|
|
2967
3090
|
}).strict()
|
|
2968
3091
|
]);
|
|
2969
3092
|
var cashErrorJsonSchema = zod.z.object({
|
|
@@ -3221,6 +3344,7 @@ function cashoutResultToJson(result) {
|
|
|
3221
3344
|
escrowAddress: result.escrowAddress,
|
|
3222
3345
|
onchainDepositId: result.onchainDepositId.toString(),
|
|
3223
3346
|
order: orderToJson(result.order),
|
|
3347
|
+
accessPolicyTxHash: result.accessPolicyTxHash,
|
|
3224
3348
|
source: result.source ? {
|
|
3225
3349
|
...result.source,
|
|
3226
3350
|
amount: result.source.amount.toString()
|
|
@@ -3235,6 +3359,7 @@ function cashoutResultFromJson(json) {
|
|
|
3235
3359
|
escrowAddress: parsed.escrowAddress,
|
|
3236
3360
|
onchainDepositId: BigInt(parsed.onchainDepositId),
|
|
3237
3361
|
order: orderFromJson(parsed.order),
|
|
3362
|
+
accessPolicyTxHash: parsed.accessPolicyTxHash,
|
|
3238
3363
|
source: parsed.source ? {
|
|
3239
3364
|
...parsed.source,
|
|
3240
3365
|
amount: BigInt(parsed.source.amount)
|
|
@@ -3245,7 +3370,8 @@ function prepareResultToJson(result) {
|
|
|
3245
3370
|
return {
|
|
3246
3371
|
txs: result.txs.map(preparedTxToJson),
|
|
3247
3372
|
steps: result.steps.map(preparedStepToJson),
|
|
3248
|
-
register: result.register
|
|
3373
|
+
register: result.register,
|
|
3374
|
+
accessPolicyRequired: result.accessPolicyRequired
|
|
3249
3375
|
};
|
|
3250
3376
|
}
|
|
3251
3377
|
function prepareResultFromJson(json) {
|
|
@@ -3253,7 +3379,8 @@ function prepareResultFromJson(json) {
|
|
|
3253
3379
|
return {
|
|
3254
3380
|
txs: parsed.txs.map(preparedTxFromJson),
|
|
3255
3381
|
steps: parsed.steps.map(preparedStepFromJson),
|
|
3256
|
-
register: parsed.register
|
|
3382
|
+
register: parsed.register,
|
|
3383
|
+
accessPolicyRequired: parsed.accessPolicyRequired
|
|
3257
3384
|
};
|
|
3258
3385
|
}
|
|
3259
3386
|
function withdrawResultToJson(result) {
|
|
@@ -3333,6 +3460,13 @@ function cashErrorFromJson(json) {
|
|
|
3333
3460
|
transactionHash: parsed.recovery.transactionHash,
|
|
3334
3461
|
operation: parsed.recovery.operation
|
|
3335
3462
|
};
|
|
3463
|
+
} else if (parsed.recovery.kind === "configure-cashout-access-policy") {
|
|
3464
|
+
recovery = {
|
|
3465
|
+
kind: parsed.recovery.kind,
|
|
3466
|
+
depositId: parsed.recovery.depositId,
|
|
3467
|
+
groupIds: parsed.recovery.groupIds,
|
|
3468
|
+
...parsed.recovery.transactionHash !== void 0 ? { transactionHash: parsed.recovery.transactionHash } : {}
|
|
3469
|
+
};
|
|
3336
3470
|
} else if (parsed.recovery.kind === "inspect-base-operation-submission") {
|
|
3337
3471
|
recovery = {
|
|
3338
3472
|
kind: parsed.recovery.kind,
|
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-
|
|
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 CashReceiveLeg, H as CashoutInput, J as CashoutOptions, K as CuratorPayeeDataInput, L as EstimateInput, M as EstimateOptions, N as MIN_CASHOUT_AMOUNT, O as OrdersOptions, Q as PreparedCashoutReceipt, S as RECOMMENDED_MIN_CASHOUT_AMOUNT, U as RelayOptions, V as RelayQuoteInput, X as RelaySourceInput, Y as RelayTransaction, Z as SignerOptions, _ as WatchOptions, $ as WithdrawOptions, a0 as buildCapabilities, a1 as createCashClient, a2 as normalizeCashPayee, a3 as toCashReferralAttributionCode } from './createCashClient-
|
|
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-C5YKh7cv.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 CashReceiveLeg, H as CashoutInput, J as CashoutOptions, K as CuratorPayeeDataInput, L as EstimateInput, M as EstimateOptions, N as MIN_CASHOUT_AMOUNT, O as OrdersOptions, Q as PreparedCashoutReceipt, S as RECOMMENDED_MIN_CASHOUT_AMOUNT, U as RelayOptions, V as RelayQuoteInput, X as RelaySourceInput, Y as RelayTransaction, Z as SignerOptions, _ as WatchOptions, $ as WithdrawOptions, a0 as buildCapabilities, a1 as createCashClient, a2 as normalizeCashPayee, a3 as toCashReferralAttributionCode } from './createCashClient-C5YKh7cv.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' | 'INVALID_PAYOUT_PLATFORMS' | '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';
|
|
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_PAYOUT_PLATFORMS' | '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' | 'ACCESS_POLICY_CONFIGURATION_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;
|
|
@@ -56,6 +56,11 @@ type CashErrorRecovery = (CashSourceRecoveryBase & {
|
|
|
56
56
|
kind: 'inspect-base-transaction';
|
|
57
57
|
transactionHash: string;
|
|
58
58
|
operation: string;
|
|
59
|
+
} | {
|
|
60
|
+
kind: 'configure-cashout-access-policy';
|
|
61
|
+
depositId: string;
|
|
62
|
+
groupIds: string[];
|
|
63
|
+
transactionHash?: string;
|
|
59
64
|
};
|
|
60
65
|
declare class CashError extends Error implements CashErrorShape {
|
|
61
66
|
readonly code: CashErrorCode;
|
|
@@ -130,6 +135,7 @@ declare const errors: {
|
|
|
130
135
|
transactionRejected: (verb: string, cause?: unknown) => CashError;
|
|
131
136
|
transactionSubmissionUnknown: (operation: string, cause?: unknown, recovery?: CashErrorRecovery) => CashError;
|
|
132
137
|
transactionStatusUnknown: (txHash: string, cause?: unknown, operation?: string) => CashError;
|
|
138
|
+
accessPolicyConfigurationFailed: (depositId: string, groupIds: readonly string[], cause?: unknown, transactionHash?: string) => CashError;
|
|
133
139
|
escrowPaused: () => CashError;
|
|
134
140
|
/** Generic fallback for an on-chain call that failed for an unrecognized reason. */
|
|
135
141
|
chainCallFailed: (verb: string, cause?: unknown) => CashError;
|
|
@@ -1994,6 +2000,7 @@ declare const cashoutResultJsonSchema: z.ZodObject<{
|
|
|
1994
2000
|
intentCount?: number | undefined;
|
|
1995
2001
|
withdrawn?: boolean | undefined;
|
|
1996
2002
|
}>;
|
|
2003
|
+
accessPolicyTxHash: z.ZodOptional<z.ZodString>;
|
|
1997
2004
|
source: z.ZodOptional<z.ZodObject<{
|
|
1998
2005
|
amount: z.ZodString;
|
|
1999
2006
|
requestId: z.ZodOptional<z.ZodString>;
|
|
@@ -2158,6 +2165,7 @@ declare const cashoutResultJsonSchema: z.ZodObject<{
|
|
|
2158
2165
|
} | undefined;
|
|
2159
2166
|
requestId?: string | undefined;
|
|
2160
2167
|
} | undefined;
|
|
2168
|
+
accessPolicyTxHash?: string | undefined;
|
|
2161
2169
|
}, {
|
|
2162
2170
|
depositId: string;
|
|
2163
2171
|
escrowAddress: string;
|
|
@@ -2235,6 +2243,7 @@ declare const cashoutResultJsonSchema: z.ZodObject<{
|
|
|
2235
2243
|
} | undefined;
|
|
2236
2244
|
requestId?: string | undefined;
|
|
2237
2245
|
} | undefined;
|
|
2246
|
+
accessPolicyTxHash?: string | undefined;
|
|
2238
2247
|
}>;
|
|
2239
2248
|
declare const prepareResultJsonSchema: z.ZodObject<{
|
|
2240
2249
|
txs: z.ZodArray<z.ZodObject<{
|
|
@@ -2270,6 +2279,7 @@ declare const prepareResultJsonSchema: z.ZodObject<{
|
|
|
2270
2279
|
}, {
|
|
2271
2280
|
hashedOnchainIds: string[];
|
|
2272
2281
|
}>;
|
|
2282
|
+
accessPolicyRequired: z.ZodBoolean;
|
|
2273
2283
|
}, "strip", z.ZodTypeAny, {
|
|
2274
2284
|
steps: {
|
|
2275
2285
|
kind: "createDeposit" | "approve" | "pruneExpiredIntents" | "withdrawDeposit" | "removeFunds" | "addFunds";
|
|
@@ -2284,6 +2294,7 @@ declare const prepareResultJsonSchema: z.ZodObject<{
|
|
|
2284
2294
|
register: {
|
|
2285
2295
|
hashedOnchainIds: string[];
|
|
2286
2296
|
};
|
|
2297
|
+
accessPolicyRequired: boolean;
|
|
2287
2298
|
}, {
|
|
2288
2299
|
steps: {
|
|
2289
2300
|
kind: "createDeposit" | "approve" | "pruneExpiredIntents" | "withdrawDeposit" | "removeFunds" | "addFunds";
|
|
@@ -2298,6 +2309,7 @@ declare const prepareResultJsonSchema: z.ZodObject<{
|
|
|
2298
2309
|
register: {
|
|
2299
2310
|
hashedOnchainIds: string[];
|
|
2300
2311
|
};
|
|
2312
|
+
accessPolicyRequired: boolean;
|
|
2301
2313
|
}>;
|
|
2302
2314
|
declare const withdrawResultJsonSchema: z.ZodObject<{
|
|
2303
2315
|
depositId: z.ZodString;
|
|
@@ -3184,9 +3196,24 @@ declare const cashErrorRecoveryJsonSchema: z.ZodDiscriminatedUnion<"kind", [z.Zo
|
|
|
3184
3196
|
kind: "inspect-base-transaction";
|
|
3185
3197
|
transactionHash: string;
|
|
3186
3198
|
operation: string;
|
|
3199
|
+
}>, z.ZodObject<{
|
|
3200
|
+
kind: z.ZodLiteral<"configure-cashout-access-policy">;
|
|
3201
|
+
depositId: z.ZodString;
|
|
3202
|
+
groupIds: z.ZodArray<z.ZodString, "many">;
|
|
3203
|
+
transactionHash: z.ZodOptional<z.ZodString>;
|
|
3204
|
+
}, "strict", z.ZodTypeAny, {
|
|
3205
|
+
depositId: string;
|
|
3206
|
+
kind: "configure-cashout-access-policy";
|
|
3207
|
+
groupIds: string[];
|
|
3208
|
+
transactionHash?: string | undefined;
|
|
3209
|
+
}, {
|
|
3210
|
+
depositId: string;
|
|
3211
|
+
kind: "configure-cashout-access-policy";
|
|
3212
|
+
groupIds: string[];
|
|
3213
|
+
transactionHash?: string | undefined;
|
|
3187
3214
|
}>]>;
|
|
3188
3215
|
declare const cashErrorJsonSchema: z.ZodObject<{
|
|
3189
|
-
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_PAYOUT_PLATFORMS", "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"]>;
|
|
3216
|
+
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_PAYOUT_PLATFORMS", "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", "ACCESS_POLICY_CONFIGURATION_FAILED", "ALLOWANCE_NOT_VISIBLE", "SIGNER_REQUIRED", "SIGNER_CHAIN_MISMATCH", "SIGNER_CHAIN_UNAVAILABLE", "WATCH_TIMEOUT", "TRANSACTION_REJECTED", "TRANSACTION_FAILED", "TRANSACTION_SUBMISSION_UNKNOWN", "TRANSACTION_STATUS_UNKNOWN"]>;
|
|
3190
3217
|
message: z.ZodString;
|
|
3191
3218
|
retryable: z.ZodBoolean;
|
|
3192
3219
|
remediation: z.ZodString;
|
|
@@ -3570,10 +3597,25 @@ declare const cashErrorJsonSchema: z.ZodObject<{
|
|
|
3570
3597
|
kind: "inspect-base-transaction";
|
|
3571
3598
|
transactionHash: string;
|
|
3572
3599
|
operation: string;
|
|
3600
|
+
}>, z.ZodObject<{
|
|
3601
|
+
kind: z.ZodLiteral<"configure-cashout-access-policy">;
|
|
3602
|
+
depositId: z.ZodString;
|
|
3603
|
+
groupIds: z.ZodArray<z.ZodString, "many">;
|
|
3604
|
+
transactionHash: z.ZodOptional<z.ZodString>;
|
|
3605
|
+
}, "strict", z.ZodTypeAny, {
|
|
3606
|
+
depositId: string;
|
|
3607
|
+
kind: "configure-cashout-access-policy";
|
|
3608
|
+
groupIds: string[];
|
|
3609
|
+
transactionHash?: string | undefined;
|
|
3610
|
+
}, {
|
|
3611
|
+
depositId: string;
|
|
3612
|
+
kind: "configure-cashout-access-policy";
|
|
3613
|
+
groupIds: string[];
|
|
3614
|
+
transactionHash?: string | undefined;
|
|
3573
3615
|
}>]>>;
|
|
3574
3616
|
}, "strict", z.ZodTypeAny, {
|
|
3575
3617
|
message: string;
|
|
3576
|
-
code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_PAYOUT_PLATFORMS" | "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";
|
|
3618
|
+
code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_PAYOUT_PLATFORMS" | "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" | "ACCESS_POLICY_CONFIGURATION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
|
|
3577
3619
|
retryable: boolean;
|
|
3578
3620
|
remediation: string;
|
|
3579
3621
|
recovery?: {
|
|
@@ -3652,10 +3694,15 @@ declare const cashErrorJsonSchema: z.ZodObject<{
|
|
|
3652
3694
|
kind: "inspect-base-transaction";
|
|
3653
3695
|
transactionHash: string;
|
|
3654
3696
|
operation: string;
|
|
3697
|
+
} | {
|
|
3698
|
+
depositId: string;
|
|
3699
|
+
kind: "configure-cashout-access-policy";
|
|
3700
|
+
groupIds: string[];
|
|
3701
|
+
transactionHash?: string | undefined;
|
|
3655
3702
|
} | undefined;
|
|
3656
3703
|
}, {
|
|
3657
3704
|
message: string;
|
|
3658
|
-
code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_PAYOUT_PLATFORMS" | "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";
|
|
3705
|
+
code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_PAYOUT_PLATFORMS" | "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" | "ACCESS_POLICY_CONFIGURATION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
|
|
3659
3706
|
retryable: boolean;
|
|
3660
3707
|
remediation: string;
|
|
3661
3708
|
recovery?: {
|
|
@@ -3734,6 +3781,11 @@ declare const cashErrorJsonSchema: z.ZodObject<{
|
|
|
3734
3781
|
kind: "inspect-base-transaction";
|
|
3735
3782
|
transactionHash: string;
|
|
3736
3783
|
operation: string;
|
|
3784
|
+
} | {
|
|
3785
|
+
depositId: string;
|
|
3786
|
+
kind: "configure-cashout-access-policy";
|
|
3787
|
+
groupIds: string[];
|
|
3788
|
+
transactionHash?: string | undefined;
|
|
3737
3789
|
} | undefined;
|
|
3738
3790
|
}>;
|
|
3739
3791
|
type CashOrderJson = z.infer<typeof cashOrderJsonSchema>;
|
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-
|
|
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 CashReceiveLeg, H as CashoutInput, J as CashoutOptions, K as CuratorPayeeDataInput, L as EstimateInput, M as EstimateOptions, N as MIN_CASHOUT_AMOUNT, O as OrdersOptions, Q as PreparedCashoutReceipt, S as RECOMMENDED_MIN_CASHOUT_AMOUNT, U as RelayOptions, V as RelayQuoteInput, X as RelaySourceInput, Y as RelayTransaction, Z as SignerOptions, _ as WatchOptions, $ as WithdrawOptions, a0 as buildCapabilities, a1 as createCashClient, a2 as normalizeCashPayee, a3 as toCashReferralAttributionCode } from './createCashClient-
|
|
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-C5YKh7cv.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 CashReceiveLeg, H as CashoutInput, J as CashoutOptions, K as CuratorPayeeDataInput, L as EstimateInput, M as EstimateOptions, N as MIN_CASHOUT_AMOUNT, O as OrdersOptions, Q as PreparedCashoutReceipt, S as RECOMMENDED_MIN_CASHOUT_AMOUNT, U as RelayOptions, V as RelayQuoteInput, X as RelaySourceInput, Y as RelayTransaction, Z as SignerOptions, _ as WatchOptions, $ as WithdrawOptions, a0 as buildCapabilities, a1 as createCashClient, a2 as normalizeCashPayee, a3 as toCashReferralAttributionCode } from './createCashClient-C5YKh7cv.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' | 'INVALID_PAYOUT_PLATFORMS' | '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';
|
|
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_PAYOUT_PLATFORMS' | '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' | 'ACCESS_POLICY_CONFIGURATION_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;
|
|
@@ -56,6 +56,11 @@ type CashErrorRecovery = (CashSourceRecoveryBase & {
|
|
|
56
56
|
kind: 'inspect-base-transaction';
|
|
57
57
|
transactionHash: string;
|
|
58
58
|
operation: string;
|
|
59
|
+
} | {
|
|
60
|
+
kind: 'configure-cashout-access-policy';
|
|
61
|
+
depositId: string;
|
|
62
|
+
groupIds: string[];
|
|
63
|
+
transactionHash?: string;
|
|
59
64
|
};
|
|
60
65
|
declare class CashError extends Error implements CashErrorShape {
|
|
61
66
|
readonly code: CashErrorCode;
|
|
@@ -130,6 +135,7 @@ declare const errors: {
|
|
|
130
135
|
transactionRejected: (verb: string, cause?: unknown) => CashError;
|
|
131
136
|
transactionSubmissionUnknown: (operation: string, cause?: unknown, recovery?: CashErrorRecovery) => CashError;
|
|
132
137
|
transactionStatusUnknown: (txHash: string, cause?: unknown, operation?: string) => CashError;
|
|
138
|
+
accessPolicyConfigurationFailed: (depositId: string, groupIds: readonly string[], cause?: unknown, transactionHash?: string) => CashError;
|
|
133
139
|
escrowPaused: () => CashError;
|
|
134
140
|
/** Generic fallback for an on-chain call that failed for an unrecognized reason. */
|
|
135
141
|
chainCallFailed: (verb: string, cause?: unknown) => CashError;
|
|
@@ -1994,6 +2000,7 @@ declare const cashoutResultJsonSchema: z.ZodObject<{
|
|
|
1994
2000
|
intentCount?: number | undefined;
|
|
1995
2001
|
withdrawn?: boolean | undefined;
|
|
1996
2002
|
}>;
|
|
2003
|
+
accessPolicyTxHash: z.ZodOptional<z.ZodString>;
|
|
1997
2004
|
source: z.ZodOptional<z.ZodObject<{
|
|
1998
2005
|
amount: z.ZodString;
|
|
1999
2006
|
requestId: z.ZodOptional<z.ZodString>;
|
|
@@ -2158,6 +2165,7 @@ declare const cashoutResultJsonSchema: z.ZodObject<{
|
|
|
2158
2165
|
} | undefined;
|
|
2159
2166
|
requestId?: string | undefined;
|
|
2160
2167
|
} | undefined;
|
|
2168
|
+
accessPolicyTxHash?: string | undefined;
|
|
2161
2169
|
}, {
|
|
2162
2170
|
depositId: string;
|
|
2163
2171
|
escrowAddress: string;
|
|
@@ -2235,6 +2243,7 @@ declare const cashoutResultJsonSchema: z.ZodObject<{
|
|
|
2235
2243
|
} | undefined;
|
|
2236
2244
|
requestId?: string | undefined;
|
|
2237
2245
|
} | undefined;
|
|
2246
|
+
accessPolicyTxHash?: string | undefined;
|
|
2238
2247
|
}>;
|
|
2239
2248
|
declare const prepareResultJsonSchema: z.ZodObject<{
|
|
2240
2249
|
txs: z.ZodArray<z.ZodObject<{
|
|
@@ -2270,6 +2279,7 @@ declare const prepareResultJsonSchema: z.ZodObject<{
|
|
|
2270
2279
|
}, {
|
|
2271
2280
|
hashedOnchainIds: string[];
|
|
2272
2281
|
}>;
|
|
2282
|
+
accessPolicyRequired: z.ZodBoolean;
|
|
2273
2283
|
}, "strip", z.ZodTypeAny, {
|
|
2274
2284
|
steps: {
|
|
2275
2285
|
kind: "createDeposit" | "approve" | "pruneExpiredIntents" | "withdrawDeposit" | "removeFunds" | "addFunds";
|
|
@@ -2284,6 +2294,7 @@ declare const prepareResultJsonSchema: z.ZodObject<{
|
|
|
2284
2294
|
register: {
|
|
2285
2295
|
hashedOnchainIds: string[];
|
|
2286
2296
|
};
|
|
2297
|
+
accessPolicyRequired: boolean;
|
|
2287
2298
|
}, {
|
|
2288
2299
|
steps: {
|
|
2289
2300
|
kind: "createDeposit" | "approve" | "pruneExpiredIntents" | "withdrawDeposit" | "removeFunds" | "addFunds";
|
|
@@ -2298,6 +2309,7 @@ declare const prepareResultJsonSchema: z.ZodObject<{
|
|
|
2298
2309
|
register: {
|
|
2299
2310
|
hashedOnchainIds: string[];
|
|
2300
2311
|
};
|
|
2312
|
+
accessPolicyRequired: boolean;
|
|
2301
2313
|
}>;
|
|
2302
2314
|
declare const withdrawResultJsonSchema: z.ZodObject<{
|
|
2303
2315
|
depositId: z.ZodString;
|
|
@@ -3184,9 +3196,24 @@ declare const cashErrorRecoveryJsonSchema: z.ZodDiscriminatedUnion<"kind", [z.Zo
|
|
|
3184
3196
|
kind: "inspect-base-transaction";
|
|
3185
3197
|
transactionHash: string;
|
|
3186
3198
|
operation: string;
|
|
3199
|
+
}>, z.ZodObject<{
|
|
3200
|
+
kind: z.ZodLiteral<"configure-cashout-access-policy">;
|
|
3201
|
+
depositId: z.ZodString;
|
|
3202
|
+
groupIds: z.ZodArray<z.ZodString, "many">;
|
|
3203
|
+
transactionHash: z.ZodOptional<z.ZodString>;
|
|
3204
|
+
}, "strict", z.ZodTypeAny, {
|
|
3205
|
+
depositId: string;
|
|
3206
|
+
kind: "configure-cashout-access-policy";
|
|
3207
|
+
groupIds: string[];
|
|
3208
|
+
transactionHash?: string | undefined;
|
|
3209
|
+
}, {
|
|
3210
|
+
depositId: string;
|
|
3211
|
+
kind: "configure-cashout-access-policy";
|
|
3212
|
+
groupIds: string[];
|
|
3213
|
+
transactionHash?: string | undefined;
|
|
3187
3214
|
}>]>;
|
|
3188
3215
|
declare const cashErrorJsonSchema: z.ZodObject<{
|
|
3189
|
-
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_PAYOUT_PLATFORMS", "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"]>;
|
|
3216
|
+
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_PAYOUT_PLATFORMS", "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", "ACCESS_POLICY_CONFIGURATION_FAILED", "ALLOWANCE_NOT_VISIBLE", "SIGNER_REQUIRED", "SIGNER_CHAIN_MISMATCH", "SIGNER_CHAIN_UNAVAILABLE", "WATCH_TIMEOUT", "TRANSACTION_REJECTED", "TRANSACTION_FAILED", "TRANSACTION_SUBMISSION_UNKNOWN", "TRANSACTION_STATUS_UNKNOWN"]>;
|
|
3190
3217
|
message: z.ZodString;
|
|
3191
3218
|
retryable: z.ZodBoolean;
|
|
3192
3219
|
remediation: z.ZodString;
|
|
@@ -3570,10 +3597,25 @@ declare const cashErrorJsonSchema: z.ZodObject<{
|
|
|
3570
3597
|
kind: "inspect-base-transaction";
|
|
3571
3598
|
transactionHash: string;
|
|
3572
3599
|
operation: string;
|
|
3600
|
+
}>, z.ZodObject<{
|
|
3601
|
+
kind: z.ZodLiteral<"configure-cashout-access-policy">;
|
|
3602
|
+
depositId: z.ZodString;
|
|
3603
|
+
groupIds: z.ZodArray<z.ZodString, "many">;
|
|
3604
|
+
transactionHash: z.ZodOptional<z.ZodString>;
|
|
3605
|
+
}, "strict", z.ZodTypeAny, {
|
|
3606
|
+
depositId: string;
|
|
3607
|
+
kind: "configure-cashout-access-policy";
|
|
3608
|
+
groupIds: string[];
|
|
3609
|
+
transactionHash?: string | undefined;
|
|
3610
|
+
}, {
|
|
3611
|
+
depositId: string;
|
|
3612
|
+
kind: "configure-cashout-access-policy";
|
|
3613
|
+
groupIds: string[];
|
|
3614
|
+
transactionHash?: string | undefined;
|
|
3573
3615
|
}>]>>;
|
|
3574
3616
|
}, "strict", z.ZodTypeAny, {
|
|
3575
3617
|
message: string;
|
|
3576
|
-
code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_PAYOUT_PLATFORMS" | "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";
|
|
3618
|
+
code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_PAYOUT_PLATFORMS" | "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" | "ACCESS_POLICY_CONFIGURATION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
|
|
3577
3619
|
retryable: boolean;
|
|
3578
3620
|
remediation: string;
|
|
3579
3621
|
recovery?: {
|
|
@@ -3652,10 +3694,15 @@ declare const cashErrorJsonSchema: z.ZodObject<{
|
|
|
3652
3694
|
kind: "inspect-base-transaction";
|
|
3653
3695
|
transactionHash: string;
|
|
3654
3696
|
operation: string;
|
|
3697
|
+
} | {
|
|
3698
|
+
depositId: string;
|
|
3699
|
+
kind: "configure-cashout-access-policy";
|
|
3700
|
+
groupIds: string[];
|
|
3701
|
+
transactionHash?: string | undefined;
|
|
3655
3702
|
} | undefined;
|
|
3656
3703
|
}, {
|
|
3657
3704
|
message: string;
|
|
3658
|
-
code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_PAYOUT_PLATFORMS" | "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";
|
|
3705
|
+
code: "ORACLE_UNSUPPORTED_CURRENCY" | "ORACLE_READ_FAILED" | "UNSUPPORTED_PLATFORM" | "UNSUPPORTED_PLATFORM_CURRENCY" | "AMOUNT_BELOW_MINIMUM" | "INVALID_INTENT_AMOUNT_RANGE" | "INVALID_PAYOUT_CURRENCIES" | "INVALID_PAYOUT_PLATFORMS" | "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" | "ACCESS_POLICY_CONFIGURATION_FAILED" | "ALLOWANCE_NOT_VISIBLE" | "SIGNER_REQUIRED" | "SIGNER_CHAIN_MISMATCH" | "SIGNER_CHAIN_UNAVAILABLE" | "WATCH_TIMEOUT" | "TRANSACTION_REJECTED" | "TRANSACTION_FAILED" | "TRANSACTION_SUBMISSION_UNKNOWN" | "TRANSACTION_STATUS_UNKNOWN";
|
|
3659
3706
|
retryable: boolean;
|
|
3660
3707
|
remediation: string;
|
|
3661
3708
|
recovery?: {
|
|
@@ -3734,6 +3781,11 @@ declare const cashErrorJsonSchema: z.ZodObject<{
|
|
|
3734
3781
|
kind: "inspect-base-transaction";
|
|
3735
3782
|
transactionHash: string;
|
|
3736
3783
|
operation: string;
|
|
3784
|
+
} | {
|
|
3785
|
+
depositId: string;
|
|
3786
|
+
kind: "configure-cashout-access-policy";
|
|
3787
|
+
groupIds: string[];
|
|
3788
|
+
transactionHash?: string | undefined;
|
|
3737
3789
|
} | undefined;
|
|
3738
3790
|
}>;
|
|
3739
3791
|
type CashOrderJson = z.infer<typeof cashOrderJsonSchema>;
|
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-
|
|
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-
|
|
1
|
+
import { MARKET_SPREAD_BPS, ORACLE_MIN_CONVERSION_RATE_SENTINEL, CASH_RETAIN_ON_EMPTY, CASH_INTENT_GUARDIAN_ADDRESS, BASE_USDC_ADDRESS, USDC_DECIMALS, BASE_CHAIN_ID, errors, isCashError, CASH_ORDER_STATUSES, CASH_RESTRICTED_PLATFORMS, mapChainError, CashError, CASH_ACCESS_GROUP_IDS } from './chunk-ORCJKOT6.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-ORCJKOT6.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';
|
|
@@ -105,6 +105,7 @@ async function prepareCashDepositParams(client, input, adapters) {
|
|
|
105
105
|
paymentMethodsOverride,
|
|
106
106
|
paymentMethodDataOverride,
|
|
107
107
|
currenciesOverride,
|
|
108
|
+
intentGuardian: CASH_INTENT_GUARDIAN_ADDRESS,
|
|
108
109
|
retainOnEmpty: CASH_RETAIN_ON_EMPTY
|
|
109
110
|
};
|
|
110
111
|
}
|
|
@@ -1665,6 +1666,64 @@ function createCashClient(options) {
|
|
|
1665
1666
|
if (lastNonceError) throw lastNonceError;
|
|
1666
1667
|
throw new Error(`Signer provider did not observe Relay nonce ${afterRelay - 1}`);
|
|
1667
1668
|
}
|
|
1669
|
+
async function configureCashoutAccess(client, signer, depositInput, depositId) {
|
|
1670
|
+
if (!depositInput.payouts.some(
|
|
1671
|
+
(payout) => CASH_RESTRICTED_PLATFORMS.has(payout.processorName.toLowerCase())
|
|
1672
|
+
)) {
|
|
1673
|
+
return void 0;
|
|
1674
|
+
}
|
|
1675
|
+
const groupIds = CASH_ACCESS_GROUP_IDS[environment];
|
|
1676
|
+
const prepared = prepareCashoutAccess(depositId, client);
|
|
1677
|
+
let hash;
|
|
1678
|
+
try {
|
|
1679
|
+
hash = await signer.sendTransaction({
|
|
1680
|
+
account: signer.account,
|
|
1681
|
+
chain: signer.chain,
|
|
1682
|
+
to: prepared.to,
|
|
1683
|
+
data: prepared.data,
|
|
1684
|
+
value: prepared.value
|
|
1685
|
+
});
|
|
1686
|
+
} catch (err) {
|
|
1687
|
+
throw errors.accessPolicyConfigurationFailed(depositId, groupIds, err);
|
|
1688
|
+
}
|
|
1689
|
+
let receipt;
|
|
1690
|
+
try {
|
|
1691
|
+
receipt = await client.publicClient.waitForTransactionReceipt({ hash });
|
|
1692
|
+
} catch (err) {
|
|
1693
|
+
throw errors.accessPolicyConfigurationFailed(depositId, groupIds, err, hash);
|
|
1694
|
+
}
|
|
1695
|
+
if (receipt.status === "reverted") {
|
|
1696
|
+
throw errors.accessPolicyConfigurationFailed(
|
|
1697
|
+
depositId,
|
|
1698
|
+
groupIds,
|
|
1699
|
+
errors.transactionFailed(hash),
|
|
1700
|
+
hash
|
|
1701
|
+
);
|
|
1702
|
+
}
|
|
1703
|
+
return hash;
|
|
1704
|
+
}
|
|
1705
|
+
function prepareCashoutAccess(depositId, client = readClient) {
|
|
1706
|
+
const { compositeId, escrowAddress, onchainDepositId } = parseDepositId(depositId);
|
|
1707
|
+
const groupIds = CASH_ACCESS_GROUP_IDS[environment];
|
|
1708
|
+
try {
|
|
1709
|
+
const prepared = client.accessPolicy.prepareConfigureDeposit({
|
|
1710
|
+
escrow: escrowAddress,
|
|
1711
|
+
depositId: onchainDepositId,
|
|
1712
|
+
enabled: true,
|
|
1713
|
+
groupIds,
|
|
1714
|
+
takers: [],
|
|
1715
|
+
txOverrides: attribution
|
|
1716
|
+
});
|
|
1717
|
+
return {
|
|
1718
|
+
to: prepared.to,
|
|
1719
|
+
data: prepared.data,
|
|
1720
|
+
value: prepared.value,
|
|
1721
|
+
chainId: prepared.chainId
|
|
1722
|
+
};
|
|
1723
|
+
} catch (err) {
|
|
1724
|
+
throw errors.accessPolicyConfigurationFailed(compositeId, groupIds, err);
|
|
1725
|
+
}
|
|
1726
|
+
}
|
|
1668
1727
|
return {
|
|
1669
1728
|
capabilities,
|
|
1670
1729
|
async sourceCapabilities() {
|
|
@@ -1799,6 +1858,12 @@ function createCashClient(options) {
|
|
|
1799
1858
|
const abi2 = client.escrowV2Abi ?? client.escrowAbi;
|
|
1800
1859
|
const resolved2 = resolveCashDepositId({ logs: receipt2.logs, abi: abi2 });
|
|
1801
1860
|
if (!resolved2) throw errors.depositResolutionFailed(hash2);
|
|
1861
|
+
const accessPolicyTxHash2 = await configureCashoutAccess(
|
|
1862
|
+
client,
|
|
1863
|
+
opts.signer,
|
|
1864
|
+
depositInput2,
|
|
1865
|
+
resolved2.compositeId
|
|
1866
|
+
);
|
|
1802
1867
|
const order2 = deriveCashOrder(resolved2.compositeId, [], {
|
|
1803
1868
|
remainingAmount: depositInput2.amount,
|
|
1804
1869
|
status: "ACTIVE"
|
|
@@ -1809,6 +1874,7 @@ function createCashClient(options) {
|
|
|
1809
1874
|
escrowAddress: resolved2.escrowAddress,
|
|
1810
1875
|
onchainDepositId: resolved2.onchainDepositId,
|
|
1811
1876
|
order: order2,
|
|
1877
|
+
...accessPolicyTxHash2 ? { accessPolicyTxHash: accessPolicyTxHash2 } : {},
|
|
1812
1878
|
source: routedSource
|
|
1813
1879
|
};
|
|
1814
1880
|
}
|
|
@@ -1853,6 +1919,12 @@ function createCashClient(options) {
|
|
|
1853
1919
|
const abi = client.escrowV2Abi ?? client.escrowAbi;
|
|
1854
1920
|
const resolved = resolveCashDepositId({ logs: receipt.logs, abi });
|
|
1855
1921
|
if (!resolved) throw errors.depositResolutionFailed(hash);
|
|
1922
|
+
const accessPolicyTxHash = await configureCashoutAccess(
|
|
1923
|
+
client,
|
|
1924
|
+
opts.signer,
|
|
1925
|
+
depositInput,
|
|
1926
|
+
resolved.compositeId
|
|
1927
|
+
);
|
|
1856
1928
|
const order = deriveCashOrder(resolved.compositeId, [], {
|
|
1857
1929
|
remainingAmount: depositInput.amount,
|
|
1858
1930
|
status: "ACTIVE"
|
|
@@ -1863,6 +1935,7 @@ function createCashClient(options) {
|
|
|
1863
1935
|
escrowAddress: resolved.escrowAddress,
|
|
1864
1936
|
onchainDepositId: resolved.onchainDepositId,
|
|
1865
1937
|
order,
|
|
1938
|
+
...accessPolicyTxHash ? { accessPolicyTxHash } : {},
|
|
1866
1939
|
...sourceResult ? { source: sourceResult } : {}
|
|
1867
1940
|
};
|
|
1868
1941
|
},
|
|
@@ -1900,7 +1973,10 @@ function createCashClient(options) {
|
|
|
1900
1973
|
description: "Create the protocol-held cash-out order."
|
|
1901
1974
|
}
|
|
1902
1975
|
],
|
|
1903
|
-
register: { hashedOnchainIds }
|
|
1976
|
+
register: { hashedOnchainIds },
|
|
1977
|
+
accessPolicyRequired: depositInput.payouts.some(
|
|
1978
|
+
(payout) => CASH_RESTRICTED_PLATFORMS.has(payout.processorName.toLowerCase())
|
|
1979
|
+
)
|
|
1904
1980
|
};
|
|
1905
1981
|
},
|
|
1906
1982
|
finalizePreparedCashout(receipt) {
|
|
@@ -1929,6 +2005,7 @@ function createCashClient(options) {
|
|
|
1929
2005
|
})
|
|
1930
2006
|
};
|
|
1931
2007
|
},
|
|
2008
|
+
prepareAccessPolicy: prepareCashoutAccess,
|
|
1932
2009
|
async order(depositId) {
|
|
1933
2010
|
return fetchOrder(depositId);
|
|
1934
2011
|
},
|
|
@@ -2383,6 +2460,7 @@ var cashoutResultJsonSchema = z.object({
|
|
|
2383
2460
|
escrowAddress: z.string(),
|
|
2384
2461
|
onchainDepositId: nonNegativeBigintString,
|
|
2385
2462
|
order: cashOrderJsonSchema,
|
|
2463
|
+
accessPolicyTxHash: z.string().optional(),
|
|
2386
2464
|
source: z.object({
|
|
2387
2465
|
amount: nonNegativeBigintString,
|
|
2388
2466
|
requestId: z.string().optional(),
|
|
@@ -2393,7 +2471,8 @@ var cashoutResultJsonSchema = z.object({
|
|
|
2393
2471
|
var prepareResultJsonSchema = z.object({
|
|
2394
2472
|
txs: z.array(preparedTransactionJsonSchema),
|
|
2395
2473
|
steps: z.array(cashPreparedStepJsonSchema),
|
|
2396
|
-
register: z.object({ hashedOnchainIds: z.array(z.string()) })
|
|
2474
|
+
register: z.object({ hashedOnchainIds: z.array(z.string()) }),
|
|
2475
|
+
accessPolicyRequired: z.boolean()
|
|
2397
2476
|
});
|
|
2398
2477
|
var withdrawResultJsonSchema = z.object({
|
|
2399
2478
|
depositId: z.string(),
|
|
@@ -2471,6 +2550,7 @@ var CASH_ERROR_CODES = defineCashErrorCodes([
|
|
|
2471
2550
|
"SOURCE_CASHOUT_SUBMISSION_UNKNOWN",
|
|
2472
2551
|
"SOURCE_CASHOUT_STATUS_UNKNOWN",
|
|
2473
2552
|
"DEPOSIT_RESOLUTION_FAILED",
|
|
2553
|
+
"ACCESS_POLICY_CONFIGURATION_FAILED",
|
|
2474
2554
|
"ALLOWANCE_NOT_VISIBLE",
|
|
2475
2555
|
"SIGNER_REQUIRED",
|
|
2476
2556
|
"SIGNER_CHAIN_MISMATCH",
|
|
@@ -2516,6 +2596,12 @@ var cashErrorRecoveryJsonSchema = z.discriminatedUnion("kind", [
|
|
|
2516
2596
|
kind: z.literal("inspect-base-transaction"),
|
|
2517
2597
|
transactionHash: z.string(),
|
|
2518
2598
|
operation: z.string()
|
|
2599
|
+
}).strict(),
|
|
2600
|
+
z.object({
|
|
2601
|
+
kind: z.literal("configure-cashout-access-policy"),
|
|
2602
|
+
depositId: z.string(),
|
|
2603
|
+
groupIds: z.array(z.string()),
|
|
2604
|
+
transactionHash: z.string().optional()
|
|
2519
2605
|
}).strict()
|
|
2520
2606
|
]);
|
|
2521
2607
|
var cashErrorJsonSchema = z.object({
|
|
@@ -2773,6 +2859,7 @@ function cashoutResultToJson(result) {
|
|
|
2773
2859
|
escrowAddress: result.escrowAddress,
|
|
2774
2860
|
onchainDepositId: result.onchainDepositId.toString(),
|
|
2775
2861
|
order: orderToJson(result.order),
|
|
2862
|
+
accessPolicyTxHash: result.accessPolicyTxHash,
|
|
2776
2863
|
source: result.source ? {
|
|
2777
2864
|
...result.source,
|
|
2778
2865
|
amount: result.source.amount.toString()
|
|
@@ -2787,6 +2874,7 @@ function cashoutResultFromJson(json) {
|
|
|
2787
2874
|
escrowAddress: parsed.escrowAddress,
|
|
2788
2875
|
onchainDepositId: BigInt(parsed.onchainDepositId),
|
|
2789
2876
|
order: orderFromJson(parsed.order),
|
|
2877
|
+
accessPolicyTxHash: parsed.accessPolicyTxHash,
|
|
2790
2878
|
source: parsed.source ? {
|
|
2791
2879
|
...parsed.source,
|
|
2792
2880
|
amount: BigInt(parsed.source.amount)
|
|
@@ -2797,7 +2885,8 @@ function prepareResultToJson(result) {
|
|
|
2797
2885
|
return {
|
|
2798
2886
|
txs: result.txs.map(preparedTxToJson),
|
|
2799
2887
|
steps: result.steps.map(preparedStepToJson),
|
|
2800
|
-
register: result.register
|
|
2888
|
+
register: result.register,
|
|
2889
|
+
accessPolicyRequired: result.accessPolicyRequired
|
|
2801
2890
|
};
|
|
2802
2891
|
}
|
|
2803
2892
|
function prepareResultFromJson(json) {
|
|
@@ -2805,7 +2894,8 @@ function prepareResultFromJson(json) {
|
|
|
2805
2894
|
return {
|
|
2806
2895
|
txs: parsed.txs.map(preparedTxFromJson),
|
|
2807
2896
|
steps: parsed.steps.map(preparedStepFromJson),
|
|
2808
|
-
register: parsed.register
|
|
2897
|
+
register: parsed.register,
|
|
2898
|
+
accessPolicyRequired: parsed.accessPolicyRequired
|
|
2809
2899
|
};
|
|
2810
2900
|
}
|
|
2811
2901
|
function withdrawResultToJson(result) {
|
|
@@ -2885,6 +2975,13 @@ function cashErrorFromJson(json) {
|
|
|
2885
2975
|
transactionHash: parsed.recovery.transactionHash,
|
|
2886
2976
|
operation: parsed.recovery.operation
|
|
2887
2977
|
};
|
|
2978
|
+
} else if (parsed.recovery.kind === "configure-cashout-access-policy") {
|
|
2979
|
+
recovery = {
|
|
2980
|
+
kind: parsed.recovery.kind,
|
|
2981
|
+
depositId: parsed.recovery.depositId,
|
|
2982
|
+
groupIds: parsed.recovery.groupIds,
|
|
2983
|
+
...parsed.recovery.transactionHash !== void 0 ? { transactionHash: parsed.recovery.transactionHash } : {}
|
|
2984
|
+
};
|
|
2888
2985
|
} else if (parsed.recovery.kind === "inspect-base-operation-submission") {
|
|
2889
2986
|
recovery = {
|
|
2890
2987
|
kind: parsed.recovery.kind,
|
package/dist/react.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CurrencyType } from '@zkp2p/sdk';
|
|
2
|
-
import { s as CashClient, L as EstimateInput, i as CashEstimate, J as CashoutOptions, h as CashoutResult, H as CashoutInput, T as TopUpResult, W as WithdrawResult, e as CashOrder } from './createCashClient-
|
|
2
|
+
import { s as CashClient, L as EstimateInput, i as CashEstimate, J as CashoutOptions, h as CashoutResult, H as CashoutInput, T as TopUpResult, W as WithdrawResult, e as CashOrder } from './createCashClient-C5YKh7cv.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 { s as CashClient, L as EstimateInput, i as CashEstimate, J as CashoutOptions, h as CashoutResult, H as CashoutInput, T as TopUpResult, W as WithdrawResult, e as CashOrder } from './createCashClient-
|
|
2
|
+
import { s as CashClient, L as EstimateInput, i as CashEstimate, J as CashoutOptions, h as CashoutResult, H as CashoutInput, T as TopUpResult, W as WithdrawResult, e as CashOrder } from './createCashClient-C5YKh7cv.js';
|
|
3
3
|
import { WalletClient } from 'viem';
|
|
4
4
|
import '@relayprotocol/relay-sdk';
|
|
5
5
|
|
package/dist/react.js
CHANGED
package/dist/tools.cjs
CHANGED
package/dist/tools.js
CHANGED
|
@@ -64,6 +64,10 @@ but the host or a signer-backed client must execute the route before
|
|
|
64
64
|
`cash_cashout` prepares the Base-USDC order. Once the prepared `createDeposit`
|
|
65
65
|
transaction confirms, call `finalizePreparedCashout(receipt)` to decode it with
|
|
66
66
|
the environment-correct escrow ABI and obtain the resumable `CashoutResult`.
|
|
67
|
+
When `prepare()` returned `accessPolicyRequired: true`, submit and confirm
|
|
68
|
+
`prepareAccessPolicy(depositId)` before treating the cash-out as complete. It
|
|
69
|
+
attaches Plus, Pro, Peer Makers, and Peer Pay using the selected environment's
|
|
70
|
+
canonical registry IDs.
|
|
67
71
|
|
|
68
72
|
There is no static chain/token allowlist in Peer Cash. Relay decides source
|
|
69
73
|
support through its metadata and quote execution, filtered to the viem/EVM
|
|
@@ -308,6 +312,7 @@ explicit override.
|
|
|
308
312
|
| `TRANSACTION_SUBMISSION_UNKNOWN` | no | A Base mutation returned no hash but may have broadcast. Inspect wallet/protocol state and its recovery action before any retry. |
|
|
309
313
|
| `TRANSACTION_STATUS_UNKNOWN` | no | A transaction was submitted but its receipt is unknown. Inspect `recovery.transactionHash` before resubmitting. |
|
|
310
314
|
| `DEPOSIT_RESOLUTION_FAILED` | no | Base tx succeeded but no `DepositReceived` was decoded. Inspect its logs and recover the composite id. |
|
|
315
|
+
| `ACCESS_POLICY_CONFIGURATION_FAILED` | no | The cash-out exists, but its required four-group policy was not confirmed. Use `recovery.depositId` and `groupIds`; never create it again. |
|
|
311
316
|
| `INVALID_DEPOSIT_ID` | no | The id is not `escrowAddress_onchainId`. A bare number cannot cold-hydrate; use the value returned by `cashout()`. |
|
|
312
317
|
| `ORDER_NOT_FOUND` | yes | Unknown id or immediate indexer lag. Verify the id and retry shortly after creation. |
|
|
313
318
|
| `INDEXER_LAG` | yes | Indexer trails the chain. Retry the read shortly. |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zkp2p/cash",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
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)",
|