@zkp2p/cash 0.4.3 → 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-IHEOGLAS.js → chunk-ORCJKOT6.js} +37 -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 +136 -4
- package/dist/index.d.cts +58 -6
- package/dist/index.d.ts +58 -6
- package/dist/index.js +102 -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
|
```
|
|
@@ -2,6 +2,27 @@
|
|
|
2
2
|
var BASE_CHAIN_ID = 8453;
|
|
3
3
|
var BASE_USDC_ADDRESS = "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
|
|
4
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
|
+
};
|
|
5
26
|
var USDC_DECIMALS = 6;
|
|
6
27
|
var MARKET_SPREAD_BPS = 0;
|
|
7
28
|
var ORACLE_MIN_CONVERSION_RATE_SENTINEL = 1n;
|
|
@@ -379,6 +400,21 @@ var errors = {
|
|
|
379
400
|
},
|
|
380
401
|
{ cause }
|
|
381
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
|
+
),
|
|
382
418
|
escrowPaused: () => new CashError({
|
|
383
419
|
code: "ESCROW_PAUSED",
|
|
384
420
|
message: `The escrow contract is paused; deposits are temporarily disabled.`,
|
|
@@ -446,4 +482,4 @@ function isUserRejectedError(value) {
|
|
|
446
482
|
return text.some(hasUserRejectionText);
|
|
447
483
|
}
|
|
448
484
|
|
|
449
|
-
export { BASE_CHAIN_ID, BASE_USDC_ADDRESS, CASH_INTENT_GUARDIAN_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
|
@@ -13,6 +13,27 @@ var zod = require('zod');
|
|
|
13
13
|
var BASE_CHAIN_ID = 8453;
|
|
14
14
|
var BASE_USDC_ADDRESS = "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
|
|
15
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
|
+
};
|
|
16
37
|
var USDC_DECIMALS = 6;
|
|
17
38
|
var MARKET_SPREAD_BPS = 0;
|
|
18
39
|
var ORACLE_MIN_CONVERSION_RATE_SENTINEL = 1n;
|
|
@@ -861,6 +882,21 @@ var errors = {
|
|
|
861
882
|
},
|
|
862
883
|
{ cause }
|
|
863
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
|
+
),
|
|
864
900
|
escrowPaused: () => new CashError({
|
|
865
901
|
code: "ESCROW_PAUSED",
|
|
866
902
|
message: `The escrow contract is paused; deposits are temporarily disabled.`,
|
|
@@ -2115,6 +2151,64 @@ function createCashClient(options) {
|
|
|
2115
2151
|
if (lastNonceError) throw lastNonceError;
|
|
2116
2152
|
throw new Error(`Signer provider did not observe Relay nonce ${afterRelay - 1}`);
|
|
2117
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
|
+
}
|
|
2118
2212
|
return {
|
|
2119
2213
|
capabilities,
|
|
2120
2214
|
async sourceCapabilities() {
|
|
@@ -2249,6 +2343,12 @@ function createCashClient(options) {
|
|
|
2249
2343
|
const abi2 = client.escrowV2Abi ?? client.escrowAbi;
|
|
2250
2344
|
const resolved2 = resolveCashDepositId({ logs: receipt2.logs, abi: abi2 });
|
|
2251
2345
|
if (!resolved2) throw errors.depositResolutionFailed(hash2);
|
|
2346
|
+
const accessPolicyTxHash2 = await configureCashoutAccess(
|
|
2347
|
+
client,
|
|
2348
|
+
opts.signer,
|
|
2349
|
+
depositInput2,
|
|
2350
|
+
resolved2.compositeId
|
|
2351
|
+
);
|
|
2252
2352
|
const order2 = deriveCashOrder(resolved2.compositeId, [], {
|
|
2253
2353
|
remainingAmount: depositInput2.amount,
|
|
2254
2354
|
status: "ACTIVE"
|
|
@@ -2259,6 +2359,7 @@ function createCashClient(options) {
|
|
|
2259
2359
|
escrowAddress: resolved2.escrowAddress,
|
|
2260
2360
|
onchainDepositId: resolved2.onchainDepositId,
|
|
2261
2361
|
order: order2,
|
|
2362
|
+
...accessPolicyTxHash2 ? { accessPolicyTxHash: accessPolicyTxHash2 } : {},
|
|
2262
2363
|
source: routedSource
|
|
2263
2364
|
};
|
|
2264
2365
|
}
|
|
@@ -2303,6 +2404,12 @@ function createCashClient(options) {
|
|
|
2303
2404
|
const abi = client.escrowV2Abi ?? client.escrowAbi;
|
|
2304
2405
|
const resolved = resolveCashDepositId({ logs: receipt.logs, abi });
|
|
2305
2406
|
if (!resolved) throw errors.depositResolutionFailed(hash);
|
|
2407
|
+
const accessPolicyTxHash = await configureCashoutAccess(
|
|
2408
|
+
client,
|
|
2409
|
+
opts.signer,
|
|
2410
|
+
depositInput,
|
|
2411
|
+
resolved.compositeId
|
|
2412
|
+
);
|
|
2306
2413
|
const order = deriveCashOrder(resolved.compositeId, [], {
|
|
2307
2414
|
remainingAmount: depositInput.amount,
|
|
2308
2415
|
status: "ACTIVE"
|
|
@@ -2313,6 +2420,7 @@ function createCashClient(options) {
|
|
|
2313
2420
|
escrowAddress: resolved.escrowAddress,
|
|
2314
2421
|
onchainDepositId: resolved.onchainDepositId,
|
|
2315
2422
|
order,
|
|
2423
|
+
...accessPolicyTxHash ? { accessPolicyTxHash } : {},
|
|
2316
2424
|
...sourceResult ? { source: sourceResult } : {}
|
|
2317
2425
|
};
|
|
2318
2426
|
},
|
|
@@ -2350,7 +2458,10 @@ function createCashClient(options) {
|
|
|
2350
2458
|
description: "Create the protocol-held cash-out order."
|
|
2351
2459
|
}
|
|
2352
2460
|
],
|
|
2353
|
-
register: { hashedOnchainIds }
|
|
2461
|
+
register: { hashedOnchainIds },
|
|
2462
|
+
accessPolicyRequired: depositInput.payouts.some(
|
|
2463
|
+
(payout) => CASH_RESTRICTED_PLATFORMS.has(payout.processorName.toLowerCase())
|
|
2464
|
+
)
|
|
2354
2465
|
};
|
|
2355
2466
|
},
|
|
2356
2467
|
finalizePreparedCashout(receipt) {
|
|
@@ -2379,6 +2490,7 @@ function createCashClient(options) {
|
|
|
2379
2490
|
})
|
|
2380
2491
|
};
|
|
2381
2492
|
},
|
|
2493
|
+
prepareAccessPolicy: prepareCashoutAccess,
|
|
2382
2494
|
async order(depositId) {
|
|
2383
2495
|
return fetchOrder(depositId);
|
|
2384
2496
|
},
|
|
@@ -2833,6 +2945,7 @@ var cashoutResultJsonSchema = zod.z.object({
|
|
|
2833
2945
|
escrowAddress: zod.z.string(),
|
|
2834
2946
|
onchainDepositId: nonNegativeBigintString,
|
|
2835
2947
|
order: cashOrderJsonSchema,
|
|
2948
|
+
accessPolicyTxHash: zod.z.string().optional(),
|
|
2836
2949
|
source: zod.z.object({
|
|
2837
2950
|
amount: nonNegativeBigintString,
|
|
2838
2951
|
requestId: zod.z.string().optional(),
|
|
@@ -2843,7 +2956,8 @@ var cashoutResultJsonSchema = zod.z.object({
|
|
|
2843
2956
|
var prepareResultJsonSchema = zod.z.object({
|
|
2844
2957
|
txs: zod.z.array(preparedTransactionJsonSchema),
|
|
2845
2958
|
steps: zod.z.array(cashPreparedStepJsonSchema),
|
|
2846
|
-
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()
|
|
2847
2961
|
});
|
|
2848
2962
|
var withdrawResultJsonSchema = zod.z.object({
|
|
2849
2963
|
depositId: zod.z.string(),
|
|
@@ -2921,6 +3035,7 @@ var CASH_ERROR_CODES = defineCashErrorCodes([
|
|
|
2921
3035
|
"SOURCE_CASHOUT_SUBMISSION_UNKNOWN",
|
|
2922
3036
|
"SOURCE_CASHOUT_STATUS_UNKNOWN",
|
|
2923
3037
|
"DEPOSIT_RESOLUTION_FAILED",
|
|
3038
|
+
"ACCESS_POLICY_CONFIGURATION_FAILED",
|
|
2924
3039
|
"ALLOWANCE_NOT_VISIBLE",
|
|
2925
3040
|
"SIGNER_REQUIRED",
|
|
2926
3041
|
"SIGNER_CHAIN_MISMATCH",
|
|
@@ -2966,6 +3081,12 @@ var cashErrorRecoveryJsonSchema = zod.z.discriminatedUnion("kind", [
|
|
|
2966
3081
|
kind: zod.z.literal("inspect-base-transaction"),
|
|
2967
3082
|
transactionHash: zod.z.string(),
|
|
2968
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()
|
|
2969
3090
|
}).strict()
|
|
2970
3091
|
]);
|
|
2971
3092
|
var cashErrorJsonSchema = zod.z.object({
|
|
@@ -3223,6 +3344,7 @@ function cashoutResultToJson(result) {
|
|
|
3223
3344
|
escrowAddress: result.escrowAddress,
|
|
3224
3345
|
onchainDepositId: result.onchainDepositId.toString(),
|
|
3225
3346
|
order: orderToJson(result.order),
|
|
3347
|
+
accessPolicyTxHash: result.accessPolicyTxHash,
|
|
3226
3348
|
source: result.source ? {
|
|
3227
3349
|
...result.source,
|
|
3228
3350
|
amount: result.source.amount.toString()
|
|
@@ -3237,6 +3359,7 @@ function cashoutResultFromJson(json) {
|
|
|
3237
3359
|
escrowAddress: parsed.escrowAddress,
|
|
3238
3360
|
onchainDepositId: BigInt(parsed.onchainDepositId),
|
|
3239
3361
|
order: orderFromJson(parsed.order),
|
|
3362
|
+
accessPolicyTxHash: parsed.accessPolicyTxHash,
|
|
3240
3363
|
source: parsed.source ? {
|
|
3241
3364
|
...parsed.source,
|
|
3242
3365
|
amount: BigInt(parsed.source.amount)
|
|
@@ -3247,7 +3370,8 @@ function prepareResultToJson(result) {
|
|
|
3247
3370
|
return {
|
|
3248
3371
|
txs: result.txs.map(preparedTxToJson),
|
|
3249
3372
|
steps: result.steps.map(preparedStepToJson),
|
|
3250
|
-
register: result.register
|
|
3373
|
+
register: result.register,
|
|
3374
|
+
accessPolicyRequired: result.accessPolicyRequired
|
|
3251
3375
|
};
|
|
3252
3376
|
}
|
|
3253
3377
|
function prepareResultFromJson(json) {
|
|
@@ -3255,7 +3379,8 @@ function prepareResultFromJson(json) {
|
|
|
3255
3379
|
return {
|
|
3256
3380
|
txs: parsed.txs.map(preparedTxFromJson),
|
|
3257
3381
|
steps: parsed.steps.map(preparedStepFromJson),
|
|
3258
|
-
register: parsed.register
|
|
3382
|
+
register: parsed.register,
|
|
3383
|
+
accessPolicyRequired: parsed.accessPolicyRequired
|
|
3259
3384
|
};
|
|
3260
3385
|
}
|
|
3261
3386
|
function withdrawResultToJson(result) {
|
|
@@ -3335,6 +3460,13 @@ function cashErrorFromJson(json) {
|
|
|
3335
3460
|
transactionHash: parsed.recovery.transactionHash,
|
|
3336
3461
|
operation: parsed.recovery.operation
|
|
3337
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
|
+
};
|
|
3338
3470
|
} else if (parsed.recovery.kind === "inspect-base-operation-submission") {
|
|
3339
3471
|
recovery = {
|
|
3340
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, CASH_INTENT_GUARDIAN_ADDRESS, 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';
|
|
@@ -1666,6 +1666,64 @@ function createCashClient(options) {
|
|
|
1666
1666
|
if (lastNonceError) throw lastNonceError;
|
|
1667
1667
|
throw new Error(`Signer provider did not observe Relay nonce ${afterRelay - 1}`);
|
|
1668
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
|
+
}
|
|
1669
1727
|
return {
|
|
1670
1728
|
capabilities,
|
|
1671
1729
|
async sourceCapabilities() {
|
|
@@ -1800,6 +1858,12 @@ function createCashClient(options) {
|
|
|
1800
1858
|
const abi2 = client.escrowV2Abi ?? client.escrowAbi;
|
|
1801
1859
|
const resolved2 = resolveCashDepositId({ logs: receipt2.logs, abi: abi2 });
|
|
1802
1860
|
if (!resolved2) throw errors.depositResolutionFailed(hash2);
|
|
1861
|
+
const accessPolicyTxHash2 = await configureCashoutAccess(
|
|
1862
|
+
client,
|
|
1863
|
+
opts.signer,
|
|
1864
|
+
depositInput2,
|
|
1865
|
+
resolved2.compositeId
|
|
1866
|
+
);
|
|
1803
1867
|
const order2 = deriveCashOrder(resolved2.compositeId, [], {
|
|
1804
1868
|
remainingAmount: depositInput2.amount,
|
|
1805
1869
|
status: "ACTIVE"
|
|
@@ -1810,6 +1874,7 @@ function createCashClient(options) {
|
|
|
1810
1874
|
escrowAddress: resolved2.escrowAddress,
|
|
1811
1875
|
onchainDepositId: resolved2.onchainDepositId,
|
|
1812
1876
|
order: order2,
|
|
1877
|
+
...accessPolicyTxHash2 ? { accessPolicyTxHash: accessPolicyTxHash2 } : {},
|
|
1813
1878
|
source: routedSource
|
|
1814
1879
|
};
|
|
1815
1880
|
}
|
|
@@ -1854,6 +1919,12 @@ function createCashClient(options) {
|
|
|
1854
1919
|
const abi = client.escrowV2Abi ?? client.escrowAbi;
|
|
1855
1920
|
const resolved = resolveCashDepositId({ logs: receipt.logs, abi });
|
|
1856
1921
|
if (!resolved) throw errors.depositResolutionFailed(hash);
|
|
1922
|
+
const accessPolicyTxHash = await configureCashoutAccess(
|
|
1923
|
+
client,
|
|
1924
|
+
opts.signer,
|
|
1925
|
+
depositInput,
|
|
1926
|
+
resolved.compositeId
|
|
1927
|
+
);
|
|
1857
1928
|
const order = deriveCashOrder(resolved.compositeId, [], {
|
|
1858
1929
|
remainingAmount: depositInput.amount,
|
|
1859
1930
|
status: "ACTIVE"
|
|
@@ -1864,6 +1935,7 @@ function createCashClient(options) {
|
|
|
1864
1935
|
escrowAddress: resolved.escrowAddress,
|
|
1865
1936
|
onchainDepositId: resolved.onchainDepositId,
|
|
1866
1937
|
order,
|
|
1938
|
+
...accessPolicyTxHash ? { accessPolicyTxHash } : {},
|
|
1867
1939
|
...sourceResult ? { source: sourceResult } : {}
|
|
1868
1940
|
};
|
|
1869
1941
|
},
|
|
@@ -1901,7 +1973,10 @@ function createCashClient(options) {
|
|
|
1901
1973
|
description: "Create the protocol-held cash-out order."
|
|
1902
1974
|
}
|
|
1903
1975
|
],
|
|
1904
|
-
register: { hashedOnchainIds }
|
|
1976
|
+
register: { hashedOnchainIds },
|
|
1977
|
+
accessPolicyRequired: depositInput.payouts.some(
|
|
1978
|
+
(payout) => CASH_RESTRICTED_PLATFORMS.has(payout.processorName.toLowerCase())
|
|
1979
|
+
)
|
|
1905
1980
|
};
|
|
1906
1981
|
},
|
|
1907
1982
|
finalizePreparedCashout(receipt) {
|
|
@@ -1930,6 +2005,7 @@ function createCashClient(options) {
|
|
|
1930
2005
|
})
|
|
1931
2006
|
};
|
|
1932
2007
|
},
|
|
2008
|
+
prepareAccessPolicy: prepareCashoutAccess,
|
|
1933
2009
|
async order(depositId) {
|
|
1934
2010
|
return fetchOrder(depositId);
|
|
1935
2011
|
},
|
|
@@ -2384,6 +2460,7 @@ var cashoutResultJsonSchema = z.object({
|
|
|
2384
2460
|
escrowAddress: z.string(),
|
|
2385
2461
|
onchainDepositId: nonNegativeBigintString,
|
|
2386
2462
|
order: cashOrderJsonSchema,
|
|
2463
|
+
accessPolicyTxHash: z.string().optional(),
|
|
2387
2464
|
source: z.object({
|
|
2388
2465
|
amount: nonNegativeBigintString,
|
|
2389
2466
|
requestId: z.string().optional(),
|
|
@@ -2394,7 +2471,8 @@ var cashoutResultJsonSchema = z.object({
|
|
|
2394
2471
|
var prepareResultJsonSchema = z.object({
|
|
2395
2472
|
txs: z.array(preparedTransactionJsonSchema),
|
|
2396
2473
|
steps: z.array(cashPreparedStepJsonSchema),
|
|
2397
|
-
register: z.object({ hashedOnchainIds: z.array(z.string()) })
|
|
2474
|
+
register: z.object({ hashedOnchainIds: z.array(z.string()) }),
|
|
2475
|
+
accessPolicyRequired: z.boolean()
|
|
2398
2476
|
});
|
|
2399
2477
|
var withdrawResultJsonSchema = z.object({
|
|
2400
2478
|
depositId: z.string(),
|
|
@@ -2472,6 +2550,7 @@ var CASH_ERROR_CODES = defineCashErrorCodes([
|
|
|
2472
2550
|
"SOURCE_CASHOUT_SUBMISSION_UNKNOWN",
|
|
2473
2551
|
"SOURCE_CASHOUT_STATUS_UNKNOWN",
|
|
2474
2552
|
"DEPOSIT_RESOLUTION_FAILED",
|
|
2553
|
+
"ACCESS_POLICY_CONFIGURATION_FAILED",
|
|
2475
2554
|
"ALLOWANCE_NOT_VISIBLE",
|
|
2476
2555
|
"SIGNER_REQUIRED",
|
|
2477
2556
|
"SIGNER_CHAIN_MISMATCH",
|
|
@@ -2517,6 +2596,12 @@ var cashErrorRecoveryJsonSchema = z.discriminatedUnion("kind", [
|
|
|
2517
2596
|
kind: z.literal("inspect-base-transaction"),
|
|
2518
2597
|
transactionHash: z.string(),
|
|
2519
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()
|
|
2520
2605
|
}).strict()
|
|
2521
2606
|
]);
|
|
2522
2607
|
var cashErrorJsonSchema = z.object({
|
|
@@ -2774,6 +2859,7 @@ function cashoutResultToJson(result) {
|
|
|
2774
2859
|
escrowAddress: result.escrowAddress,
|
|
2775
2860
|
onchainDepositId: result.onchainDepositId.toString(),
|
|
2776
2861
|
order: orderToJson(result.order),
|
|
2862
|
+
accessPolicyTxHash: result.accessPolicyTxHash,
|
|
2777
2863
|
source: result.source ? {
|
|
2778
2864
|
...result.source,
|
|
2779
2865
|
amount: result.source.amount.toString()
|
|
@@ -2788,6 +2874,7 @@ function cashoutResultFromJson(json) {
|
|
|
2788
2874
|
escrowAddress: parsed.escrowAddress,
|
|
2789
2875
|
onchainDepositId: BigInt(parsed.onchainDepositId),
|
|
2790
2876
|
order: orderFromJson(parsed.order),
|
|
2877
|
+
accessPolicyTxHash: parsed.accessPolicyTxHash,
|
|
2791
2878
|
source: parsed.source ? {
|
|
2792
2879
|
...parsed.source,
|
|
2793
2880
|
amount: BigInt(parsed.source.amount)
|
|
@@ -2798,7 +2885,8 @@ function prepareResultToJson(result) {
|
|
|
2798
2885
|
return {
|
|
2799
2886
|
txs: result.txs.map(preparedTxToJson),
|
|
2800
2887
|
steps: result.steps.map(preparedStepToJson),
|
|
2801
|
-
register: result.register
|
|
2888
|
+
register: result.register,
|
|
2889
|
+
accessPolicyRequired: result.accessPolicyRequired
|
|
2802
2890
|
};
|
|
2803
2891
|
}
|
|
2804
2892
|
function prepareResultFromJson(json) {
|
|
@@ -2806,7 +2894,8 @@ function prepareResultFromJson(json) {
|
|
|
2806
2894
|
return {
|
|
2807
2895
|
txs: parsed.txs.map(preparedTxFromJson),
|
|
2808
2896
|
steps: parsed.steps.map(preparedStepFromJson),
|
|
2809
|
-
register: parsed.register
|
|
2897
|
+
register: parsed.register,
|
|
2898
|
+
accessPolicyRequired: parsed.accessPolicyRequired
|
|
2810
2899
|
};
|
|
2811
2900
|
}
|
|
2812
2901
|
function withdrawResultToJson(result) {
|
|
@@ -2886,6 +2975,13 @@ function cashErrorFromJson(json) {
|
|
|
2886
2975
|
transactionHash: parsed.recovery.transactionHash,
|
|
2887
2976
|
operation: parsed.recovery.operation
|
|
2888
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
|
+
};
|
|
2889
2985
|
} else if (parsed.recovery.kind === "inspect-base-operation-submission") {
|
|
2890
2986
|
recovery = {
|
|
2891
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)",
|