@zkp2p/pay-shared 5.0.0 → 7.0.0
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 +14 -1
- package/dist/attribution.d.ts +2 -1
- package/dist/attribution.js +1 -0
- package/dist/bitcoin.d.ts +4 -0
- package/dist/bitcoin.js +38 -6
- package/dist/cashoutCurrencies.d.ts +109 -0
- package/dist/cashoutCurrencies.js +94 -0
- package/dist/cashoutRails.d.ts +34 -0
- package/dist/cashoutRails.js +71 -0
- package/dist/crypto.d.ts +39 -0
- package/dist/crypto.js +110 -3
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/types.d.ts +700 -2
- package/dist/types.js +143 -1
- package/package.json +2 -2
package/dist/types.js
CHANGED
|
@@ -231,12 +231,40 @@ export const WebhookEventType = {
|
|
|
231
231
|
PAYMENT_CHARGEBACKED: 'PAYMENT_CHARGEBACKED',
|
|
232
232
|
ORDER_PARTIALLY_CHARGEBACKED: 'ORDER_PARTIALLY_CHARGEBACKED',
|
|
233
233
|
ORDER_CHARGEBACKED: 'ORDER_CHARGEBACKED',
|
|
234
|
-
|
|
234
|
+
PAYOUT_ORDER_CREATED: 'PAYOUT_ORDER_CREATED',
|
|
235
|
+
PAYOUT_ORDER_CANCELLED: 'PAYOUT_ORDER_CANCELLED',
|
|
236
|
+
PAYOUT_ORDER_PARTIALLY_FUNDED: 'PAYOUT_ORDER_PARTIALLY_FUNDED',
|
|
237
|
+
PAYOUT_ORDER_FUNDED: 'PAYOUT_ORDER_FUNDED',
|
|
238
|
+
PAYOUT_ORDER_MATCHED: 'PAYOUT_ORDER_MATCHED',
|
|
239
|
+
PAYOUT_ORDER_PARTIALLY_PAID: 'PAYOUT_ORDER_PARTIALLY_PAID',
|
|
240
|
+
PAYOUT_ORDER_SETTLED: 'PAYOUT_ORDER_SETTLED',
|
|
241
|
+
PAYOUT_ORDER_EXPIRED: 'PAYOUT_ORDER_EXPIRED',
|
|
242
|
+
};
|
|
243
|
+
/** Payout events carry a PayoutView, not the order envelope. */
|
|
244
|
+
export const PAYOUT_WEBHOOK_EVENT_TYPES = [
|
|
245
|
+
WebhookEventType.PAYOUT_ORDER_CREATED,
|
|
246
|
+
WebhookEventType.PAYOUT_ORDER_CANCELLED,
|
|
247
|
+
WebhookEventType.PAYOUT_ORDER_PARTIALLY_FUNDED,
|
|
248
|
+
WebhookEventType.PAYOUT_ORDER_FUNDED,
|
|
249
|
+
WebhookEventType.PAYOUT_ORDER_MATCHED,
|
|
250
|
+
WebhookEventType.PAYOUT_ORDER_PARTIALLY_PAID,
|
|
251
|
+
WebhookEventType.PAYOUT_ORDER_SETTLED,
|
|
252
|
+
WebhookEventType.PAYOUT_ORDER_EXPIRED,
|
|
253
|
+
];
|
|
254
|
+
const CASHOUT_WEBHOOK_EVENT_TYPE_SET = new Set(PAYOUT_WEBHOOK_EVENT_TYPES);
|
|
255
|
+
export function isPayoutWebhookEventType(type) {
|
|
256
|
+
return CASHOUT_WEBHOOK_EVENT_TYPE_SET.has(type);
|
|
257
|
+
}
|
|
235
258
|
export const WebhookDeliveryStatus = {
|
|
236
259
|
PENDING: 'PENDING',
|
|
237
260
|
DELIVERED: 'DELIVERED',
|
|
238
261
|
FAILED: 'FAILED',
|
|
239
262
|
};
|
|
263
|
+
/** Bumped only on a breaking change to a payout payload. */
|
|
264
|
+
export const PAYOUT_WEBHOOK_VERSION = 2;
|
|
265
|
+
export function isPayoutWebhook(payload) {
|
|
266
|
+
return isPayoutWebhookEventType(payload.type);
|
|
267
|
+
}
|
|
240
268
|
/**
|
|
241
269
|
* Wallet-snapshot fence rejections (ownership-transfer era rule). PR 4-6 add keys to this object.
|
|
242
270
|
* MERCHANT_OWNERSHIP_CHANGED is retryable: an order insert lost the era it read its wallet in.
|
|
@@ -318,3 +346,117 @@ export function maskOwnershipTransferEmail(email) {
|
|
|
318
346
|
throw new Error('Cannot mask an address without a local part');
|
|
319
347
|
return `${email.slice(0, 1)}•••${email.slice(at)}`;
|
|
320
348
|
}
|
|
349
|
+
// ============ Payout Types (merchant → player payouts) ============
|
|
350
|
+
export const PayoutStatus = {
|
|
351
|
+
AWAITING_FUNDING: 'AWAITING_FUNDING',
|
|
352
|
+
FUNDED: 'FUNDED',
|
|
353
|
+
READY: 'READY',
|
|
354
|
+
LISTING: 'LISTING',
|
|
355
|
+
PAYING: 'PAYING',
|
|
356
|
+
SETTLED: 'SETTLED',
|
|
357
|
+
CANCELLED: 'CANCELLED',
|
|
358
|
+
EXPIRED: 'EXPIRED',
|
|
359
|
+
};
|
|
360
|
+
export const PayoutFundingStatus = {
|
|
361
|
+
AWAITING_FUNDING: 'AWAITING_FUNDING',
|
|
362
|
+
PARTIALLY_FUNDED: 'PARTIALLY_FUNDED',
|
|
363
|
+
FUNDED: 'FUNDED',
|
|
364
|
+
FUNDING_EXPIRED: 'FUNDING_EXPIRED',
|
|
365
|
+
};
|
|
366
|
+
export const PayoutCancelSource = {
|
|
367
|
+
MERCHANT: 'MERCHANT',
|
|
368
|
+
PEER_APP: 'PEER_APP',
|
|
369
|
+
};
|
|
370
|
+
export const PayoutKind = { ESCROW: 'ESCROW', CRYPTO: 'CRYPTO' };
|
|
371
|
+
export const PayoutAttemptStatus = {
|
|
372
|
+
ACTIVE: 'ACTIVE',
|
|
373
|
+
CLOSED: 'CLOSED',
|
|
374
|
+
SETTLED: 'SETTLED',
|
|
375
|
+
FAILED: 'FAILED',
|
|
376
|
+
};
|
|
377
|
+
/** Fiat payout methods, in the order players see them: SAR rails, then buyer-proof rails. */
|
|
378
|
+
export const PayoutFiatRail = {
|
|
379
|
+
VENMO: 'venmo',
|
|
380
|
+
CASHAPP: 'cashapp',
|
|
381
|
+
PAYPAL: 'paypal',
|
|
382
|
+
ZELLE: 'zelle',
|
|
383
|
+
REVOLUT: 'revolut',
|
|
384
|
+
CHIME: 'chime',
|
|
385
|
+
};
|
|
386
|
+
/** One rail per crypto payout network, with checkout's rail ids (any-coin spec "Cashout rails"); the player sees them as one "Crypto" option. */
|
|
387
|
+
export const PayoutCryptoRail = {
|
|
388
|
+
RELAY_1: 'relay_1',
|
|
389
|
+
RELAY_10: 'relay_10',
|
|
390
|
+
RELAY_56: 'relay_56',
|
|
391
|
+
RELAY_137: 'relay_137',
|
|
392
|
+
RELAY_480: 'relay_480',
|
|
393
|
+
RELAY_999: 'relay_999',
|
|
394
|
+
RELAY_5042: 'relay_5042',
|
|
395
|
+
RELAY_8453: 'relay_8453',
|
|
396
|
+
RELAY_42161: 'relay_42161',
|
|
397
|
+
RELAY_8253038: 'relay_8253038',
|
|
398
|
+
RELAY_728126428: 'relay_728126428',
|
|
399
|
+
RELAY_792703809: 'relay_792703809',
|
|
400
|
+
/** ZEC on Zcash through NEAR Intents (Zcash spec "Catalog, route and address"); checkout's ZCASH_RAIL. */
|
|
401
|
+
NEAR_INTENTS_133701: 'near_intents_133701',
|
|
402
|
+
};
|
|
403
|
+
/** Every payout rail, in rail order: fiat, then the crypto networks. */
|
|
404
|
+
export const PayoutRail = { ...PayoutFiatRail, ...PayoutCryptoRail };
|
|
405
|
+
export const PayoutProvider = { RELAY: 'RELAY', NEAR_INTENTS: 'NEAR_INTENTS' };
|
|
406
|
+
export const CashoutPayoutBridgeStatus = {
|
|
407
|
+
QUOTED: 'QUOTED', NOT_SENT: 'NOT_SENT', BRIDGING: 'BRIDGING', DELIVERED: 'DELIVERED', REFUNDED: 'REFUNDED',
|
|
408
|
+
};
|
|
409
|
+
// ============ Merchant Dashboard Payout Types ============
|
|
410
|
+
/** A moment on a payout's dashboard timeline. */
|
|
411
|
+
export const PayoutTimelineEventType = {
|
|
412
|
+
CREATED: 'CREATED',
|
|
413
|
+
PARTIALLY_FUNDED: 'PARTIALLY_FUNDED',
|
|
414
|
+
FUNDED: 'FUNDED',
|
|
415
|
+
FUNDING_EXPIRED: 'FUNDING_EXPIRED',
|
|
416
|
+
SIGNED_IN: 'SIGNED_IN',
|
|
417
|
+
METHOD_READY: 'METHOD_READY',
|
|
418
|
+
LISTED: 'LISTED',
|
|
419
|
+
TRANSFER_SENT: 'TRANSFER_SENT',
|
|
420
|
+
MATCHED: 'MATCHED',
|
|
421
|
+
/** A buyer paid part of the listing; the rest is listed again or left for the player. */
|
|
422
|
+
PARTIALLY_PAID: 'PARTIALLY_PAID',
|
|
423
|
+
/** Pay set the deposit's intent range to what is left, so another buyer can take it. */
|
|
424
|
+
RELISTED: 'RELISTED',
|
|
425
|
+
BUYER_DROPPED: 'BUYER_DROPPED',
|
|
426
|
+
RECONNECT_NEEDED: 'RECONNECT_NEEDED',
|
|
427
|
+
/** The listing came back to the player's wallet so they can pick another payout method. */
|
|
428
|
+
LISTING_WITHDRAWN: 'LISTING_WITHDRAWN',
|
|
429
|
+
SETTLED: 'SETTLED',
|
|
430
|
+
CANCELLED: 'CANCELLED',
|
|
431
|
+
FUNDING_ISSUE: 'FUNDING_ISSUE',
|
|
432
|
+
PAYOUT_REFUNDED: 'PAYOUT_REFUNDED',
|
|
433
|
+
};
|
|
434
|
+
/** Largest merchant payout step, in whole USDC. The smallest is the API's CASHOUT_MIN_USDC (10 in production). */
|
|
435
|
+
export const PAYOUT_STEP_MAX_USDC = 1000;
|
|
436
|
+
export const PayoutFundingIssueKind = {
|
|
437
|
+
LATE_FUNDS: 'LATE_FUNDS',
|
|
438
|
+
OVERPAYMENT: 'OVERPAYMENT',
|
|
439
|
+
ROUTE_REFUND: 'ROUTE_REFUND',
|
|
440
|
+
};
|
|
441
|
+
export const PayoutFundingIssueResolution = {
|
|
442
|
+
RETURNED: 'RETURNED',
|
|
443
|
+
CLAIMED: 'CLAIMED',
|
|
444
|
+
};
|
|
445
|
+
// ============ Cashout Player Checkout Types ============
|
|
446
|
+
/** What the player can do next; drives every checkout button and every 409. */
|
|
447
|
+
export const CashoutPlayerAction = {
|
|
448
|
+
SET_METHOD: 'SET_METHOD',
|
|
449
|
+
CONNECT_RAIL: 'CONNECT_RAIL',
|
|
450
|
+
SKIP_CONNECT: 'SKIP_CONNECT',
|
|
451
|
+
CONFIRM: 'CONFIRM',
|
|
452
|
+
CHANGE_METHOD: 'CHANGE_METHOD',
|
|
453
|
+
SEND_TO_ADDRESS: 'SEND_TO_ADDRESS',
|
|
454
|
+
RELIST: 'RELIST',
|
|
455
|
+
};
|
|
456
|
+
/** What Pay is sending from the player's wallet. */
|
|
457
|
+
export const CashoutSending = { LISTING: 'LISTING', TRANSFER: 'TRANSFER', WITHDRAW: 'WITHDRAW', RELISTING: 'RELISTING' };
|
|
458
|
+
export const CashoutCredentialStatus = {
|
|
459
|
+
ACTIVE: 'active',
|
|
460
|
+
INACTIVE: 'inactive',
|
|
461
|
+
MISSING: 'missing',
|
|
462
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zkp2p/pay-shared",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Shared TypeScript types, enums, and chain utilities used by ZKP2P Pay API, SDK, and frontend apps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "rm -rf dist && tsc -p tsconfig.json",
|
|
39
39
|
"lint": "eslint . --ext .ts,.tsx",
|
|
40
|
-
"test": "vitest run",
|
|
40
|
+
"test": "vitest run && tsc -p tsconfig.test.json",
|
|
41
41
|
"prepack": "npm run build",
|
|
42
42
|
"prepublishOnly": "npm run lint"
|
|
43
43
|
},
|