@peable.to/contracts 5.0.0 → 5.2.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/dist/cjs/resources/payments/paymentIntents.js +3 -0
- package/dist/cjs/resources/payments/social.js +6 -1
- package/dist/cjs/vocabulary/index.js +1 -0
- package/dist/cjs/vocabulary/payments.js +7 -2
- package/dist/cjs/vocabulary/realtime.js +17 -0
- package/dist/esm/resources/payments/paymentIntents.js +3 -0
- package/dist/esm/resources/payments/social.js +6 -1
- package/dist/esm/vocabulary/index.js +1 -0
- package/dist/esm/vocabulary/payments.js +7 -2
- package/dist/esm/vocabulary/realtime.js +14 -0
- package/dist/types/resources/payments/index.d.ts +22 -0
- package/dist/types/resources/payments/paymentIntents.d.ts +21 -0
- package/dist/types/resources/payments/social.d.ts +3 -0
- package/dist/types/resources/payments/testHelpers.d.ts +2 -0
- package/dist/types/vocabulary/index.d.ts +1 -0
- package/dist/types/vocabulary/payments.d.ts +7 -3
- package/dist/types/vocabulary/realtime.d.ts +14 -0
- package/package.json +1 -1
|
@@ -128,6 +128,9 @@ exports.paymentIntentFaircoinSchema = (0, objects_1.defineComponent)('PaymentInt
|
|
|
128
128
|
quote: exports.faircoinQuoteSchema
|
|
129
129
|
.nullable()
|
|
130
130
|
.describe('The fiat order this payment pays, as quoted (ADR 0021); `null` on a FAIR-priced payment.'),
|
|
131
|
+
recipient_key_replaced_at: primitives_1.unixSeconds
|
|
132
|
+
.nullable()
|
|
133
|
+
.describe("When Peable found that a recipient's identity key had been replaced after this payment's address was reserved, while the payer had already broadcast (ADR 0002, amended 2026-11-06). The coins are at the address reserved under the PREVIOUS key: spendable only with that key, which the recipient may no longer hold. `null` when every recorded key is still the recipient's `#key-1`, and on a payment written before keys were recorded. A payment nobody had paid yet is never left open under a replaced key: it is canceled with `cancellation_reason: recipient_key_changed`."),
|
|
131
134
|
})
|
|
132
135
|
.strict());
|
|
133
136
|
/** Where a destination charge's funds go (`transfer_data`, ADR 0015 §2). */
|
|
@@ -99,7 +99,11 @@ exports.socialReceiveCursorSchema = (0, objects_1.defineComponent)('SocialReceiv
|
|
|
99
99
|
identity_public_key: zod_1.z
|
|
100
100
|
.string()
|
|
101
101
|
.nullable()
|
|
102
|
-
.describe('The identity public key (hex) those addresses derive from; `null` exactly when no address was ever reserved.'),
|
|
102
|
+
.describe('The identity public key (hex) those addresses derive from — the key recorded at the LAST reservation; `null` exactly when no address was ever reserved.'),
|
|
103
|
+
account_identity_public_key: zod_1.z
|
|
104
|
+
.string()
|
|
105
|
+
.nullable()
|
|
106
|
+
.describe("The caller's CURRENT identity public key: their DID's `#key-1`, read from Oxy at request time (never cached), as lowercase hex of the key exactly as the DID publishes it (`publicKeyHex`, the compressed secp256k1 key) — the same encoding as `identity_public_key`. Compare the device's key with THIS, not with `identity_public_key`, which only says what the last reservation used. `null` for a keyless (custodial) account."),
|
|
103
107
|
})
|
|
104
108
|
.strict());
|
|
105
109
|
exports.socialPaymentsQuery = networkQuery;
|
|
@@ -154,6 +158,7 @@ exports.socialRoutes = [
|
|
|
154
158
|
path: '/v1/social/me/cursor',
|
|
155
159
|
tag: 'Social payments',
|
|
156
160
|
summary: "Retrieve the caller's receive cursor",
|
|
161
|
+
description: "How far the caller's receive tree has been reserved, the key the last reservation used, and the caller's current `#key-1` read fresh from Oxy (ADR 0002). A 503 when Oxy cannot be asked for the current key.",
|
|
157
162
|
auth: 'user',
|
|
158
163
|
query: exports.socialReceiveCursorQuery,
|
|
159
164
|
response: exports.socialReceiveCursorSchema,
|
|
@@ -26,14 +26,19 @@ exports.PAYMENT_INTENT_STATUSES = [
|
|
|
26
26
|
'canceled',
|
|
27
27
|
];
|
|
28
28
|
/**
|
|
29
|
-
* Why an intent was cancelled — Stripe's reasons, plus
|
|
30
|
-
*
|
|
29
|
+
* Why an intent was cancelled — Stripe's reasons, plus two FairCoin-only ones:
|
|
30
|
+
* `underpaid` (a transaction paid less than the amount) and
|
|
31
|
+
* `recipient_key_changed` (the recipient's identity key was replaced after the
|
|
32
|
+
* address was reserved, so the address is no longer in the wallet it pays —
|
|
33
|
+
* ADR 0002, amended 2026-11-06; nothing had been broadcast, and the order stays
|
|
34
|
+
* open for a fresh address).
|
|
31
35
|
*/
|
|
32
36
|
exports.PAYMENT_INTENT_CANCELLATION_REASONS = [
|
|
33
37
|
'abandoned',
|
|
34
38
|
'automatic',
|
|
35
39
|
'duplicate',
|
|
36
40
|
'fraudulent',
|
|
41
|
+
'recipient_key_changed',
|
|
37
42
|
'requested_by_customer',
|
|
38
43
|
'underpaid',
|
|
39
44
|
];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PAYER_SOCKET_PATH = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The PAYER realtime endpoint: the Socket.IO path a payer's browser opens to
|
|
6
|
+
* hear its payment move, by the intent's `client_secret` alone.
|
|
7
|
+
*
|
|
8
|
+
* It is a SEPARATE Socket.IO server from the gateway's default `/socket.io/`
|
|
9
|
+
* one, because Socket.IO decides CORS per server (per engine), before it
|
|
10
|
+
* knows which namespace or token a connection carries. The payer server
|
|
11
|
+
* answers any origin and takes no credentials — the same rule as the payer
|
|
12
|
+
* HTTP routes (`lib/payerCors.ts`): a merchant's own site runs Pay with
|
|
13
|
+
* Peable, and the capability is the secret, never the page. The default
|
|
14
|
+
* server keeps the Oxy origins (`createOxySocketCors`) for every socket that
|
|
15
|
+
* carries an Oxy identity.
|
|
16
|
+
*/
|
|
17
|
+
exports.PAYER_SOCKET_PATH = '/payer-socket.io';
|
|
@@ -125,6 +125,9 @@ export const paymentIntentFaircoinSchema = defineComponent('PaymentIntentFaircoi
|
|
|
125
125
|
quote: faircoinQuoteSchema
|
|
126
126
|
.nullable()
|
|
127
127
|
.describe('The fiat order this payment pays, as quoted (ADR 0021); `null` on a FAIR-priced payment.'),
|
|
128
|
+
recipient_key_replaced_at: unixSeconds
|
|
129
|
+
.nullable()
|
|
130
|
+
.describe("When Peable found that a recipient's identity key had been replaced after this payment's address was reserved, while the payer had already broadcast (ADR 0002, amended 2026-11-06). The coins are at the address reserved under the PREVIOUS key: spendable only with that key, which the recipient may no longer hold. `null` when every recorded key is still the recipient's `#key-1`, and on a payment written before keys were recorded. A payment nobody had paid yet is never left open under a replaced key: it is canceled with `cancellation_reason: recipient_key_changed`."),
|
|
128
131
|
})
|
|
129
132
|
.strict());
|
|
130
133
|
/** Where a destination charge's funds go (`transfer_data`, ADR 0015 §2). */
|
|
@@ -96,7 +96,11 @@ export const socialReceiveCursorSchema = defineComponent('SocialReceiveCursor',
|
|
|
96
96
|
identity_public_key: z
|
|
97
97
|
.string()
|
|
98
98
|
.nullable()
|
|
99
|
-
.describe('The identity public key (hex) those addresses derive from; `null` exactly when no address was ever reserved.'),
|
|
99
|
+
.describe('The identity public key (hex) those addresses derive from — the key recorded at the LAST reservation; `null` exactly when no address was ever reserved.'),
|
|
100
|
+
account_identity_public_key: z
|
|
101
|
+
.string()
|
|
102
|
+
.nullable()
|
|
103
|
+
.describe("The caller's CURRENT identity public key: their DID's `#key-1`, read from Oxy at request time (never cached), as lowercase hex of the key exactly as the DID publishes it (`publicKeyHex`, the compressed secp256k1 key) — the same encoding as `identity_public_key`. Compare the device's key with THIS, not with `identity_public_key`, which only says what the last reservation used. `null` for a keyless (custodial) account."),
|
|
100
104
|
})
|
|
101
105
|
.strict());
|
|
102
106
|
export const socialPaymentsQuery = networkQuery;
|
|
@@ -151,6 +155,7 @@ export const socialRoutes = [
|
|
|
151
155
|
path: '/v1/social/me/cursor',
|
|
152
156
|
tag: 'Social payments',
|
|
153
157
|
summary: "Retrieve the caller's receive cursor",
|
|
158
|
+
description: "How far the caller's receive tree has been reserved, the key the last reservation used, and the caller's current `#key-1` read fresh from Oxy (ADR 0002). A 503 when Oxy cannot be asked for the current key.",
|
|
154
159
|
auth: 'user',
|
|
155
160
|
query: socialReceiveCursorQuery,
|
|
156
161
|
response: socialReceiveCursorSchema,
|
|
@@ -23,14 +23,19 @@ export const PAYMENT_INTENT_STATUSES = [
|
|
|
23
23
|
'canceled',
|
|
24
24
|
];
|
|
25
25
|
/**
|
|
26
|
-
* Why an intent was cancelled — Stripe's reasons, plus
|
|
27
|
-
*
|
|
26
|
+
* Why an intent was cancelled — Stripe's reasons, plus two FairCoin-only ones:
|
|
27
|
+
* `underpaid` (a transaction paid less than the amount) and
|
|
28
|
+
* `recipient_key_changed` (the recipient's identity key was replaced after the
|
|
29
|
+
* address was reserved, so the address is no longer in the wallet it pays —
|
|
30
|
+
* ADR 0002, amended 2026-11-06; nothing had been broadcast, and the order stays
|
|
31
|
+
* open for a fresh address).
|
|
28
32
|
*/
|
|
29
33
|
export const PAYMENT_INTENT_CANCELLATION_REASONS = [
|
|
30
34
|
'abandoned',
|
|
31
35
|
'automatic',
|
|
32
36
|
'duplicate',
|
|
33
37
|
'fraudulent',
|
|
38
|
+
'recipient_key_changed',
|
|
34
39
|
'requested_by_customer',
|
|
35
40
|
'underpaid',
|
|
36
41
|
];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The PAYER realtime endpoint: the Socket.IO path a payer's browser opens to
|
|
3
|
+
* hear its payment move, by the intent's `client_secret` alone.
|
|
4
|
+
*
|
|
5
|
+
* It is a SEPARATE Socket.IO server from the gateway's default `/socket.io/`
|
|
6
|
+
* one, because Socket.IO decides CORS per server (per engine), before it
|
|
7
|
+
* knows which namespace or token a connection carries. The payer server
|
|
8
|
+
* answers any origin and takes no credentials — the same rule as the payer
|
|
9
|
+
* HTTP routes (`lib/payerCors.ts`): a merchant's own site runs Pay with
|
|
10
|
+
* Peable, and the capability is the secret, never the page. The default
|
|
11
|
+
* server keeps the Oxy origins (`createOxySocketCors`) for every socket that
|
|
12
|
+
* carries an Oxy identity.
|
|
13
|
+
*/
|
|
14
|
+
export const PAYER_SOCKET_PATH = '/payer-socket.io';
|
|
@@ -182,6 +182,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
182
182
|
fraudulent: "fraudulent";
|
|
183
183
|
abandoned: "abandoned";
|
|
184
184
|
automatic: "automatic";
|
|
185
|
+
recipient_key_changed: "recipient_key_changed";
|
|
185
186
|
requested_by_customer: "requested_by_customer";
|
|
186
187
|
underpaid: "underpaid";
|
|
187
188
|
}>>;
|
|
@@ -248,6 +249,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
248
249
|
quoted_at: import("zod").ZodNumber;
|
|
249
250
|
expires_at: import("zod").ZodNumber;
|
|
250
251
|
}, import("zod/v4/core").$strict>>;
|
|
252
|
+
recipient_key_replaced_at: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
251
253
|
}, import("zod/v4/core").$strict>>;
|
|
252
254
|
merchant_id: import("zod").ZodString;
|
|
253
255
|
connected_account: import("zod").ZodNullable<import("zod").ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, import("zod/v4/core").$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -404,6 +406,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
404
406
|
fraudulent: "fraudulent";
|
|
405
407
|
abandoned: "abandoned";
|
|
406
408
|
automatic: "automatic";
|
|
409
|
+
recipient_key_changed: "recipient_key_changed";
|
|
407
410
|
requested_by_customer: "requested_by_customer";
|
|
408
411
|
underpaid: "underpaid";
|
|
409
412
|
}>>;
|
|
@@ -470,6 +473,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
470
473
|
quoted_at: import("zod").ZodNumber;
|
|
471
474
|
expires_at: import("zod").ZodNumber;
|
|
472
475
|
}, import("zod/v4/core").$strict>>;
|
|
476
|
+
recipient_key_replaced_at: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
473
477
|
}, import("zod/v4/core").$strict>>;
|
|
474
478
|
merchant_id: import("zod").ZodString;
|
|
475
479
|
connected_account: import("zod").ZodNullable<import("zod").ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, import("zod/v4/core").$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -607,6 +611,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
607
611
|
fraudulent: "fraudulent";
|
|
608
612
|
abandoned: "abandoned";
|
|
609
613
|
automatic: "automatic";
|
|
614
|
+
recipient_key_changed: "recipient_key_changed";
|
|
610
615
|
requested_by_customer: "requested_by_customer";
|
|
611
616
|
underpaid: "underpaid";
|
|
612
617
|
}>>;
|
|
@@ -673,6 +678,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
673
678
|
quoted_at: import("zod").ZodNumber;
|
|
674
679
|
expires_at: import("zod").ZodNumber;
|
|
675
680
|
}, import("zod/v4/core").$strict>>;
|
|
681
|
+
recipient_key_replaced_at: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
676
682
|
}, import("zod/v4/core").$strict>>;
|
|
677
683
|
merchant_id: import("zod").ZodString;
|
|
678
684
|
connected_account: import("zod").ZodNullable<import("zod").ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, import("zod/v4/core").$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -824,6 +830,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
824
830
|
fraudulent: "fraudulent";
|
|
825
831
|
abandoned: "abandoned";
|
|
826
832
|
automatic: "automatic";
|
|
833
|
+
recipient_key_changed: "recipient_key_changed";
|
|
827
834
|
requested_by_customer: "requested_by_customer";
|
|
828
835
|
underpaid: "underpaid";
|
|
829
836
|
}>>;
|
|
@@ -890,6 +897,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
890
897
|
quoted_at: import("zod").ZodNumber;
|
|
891
898
|
expires_at: import("zod").ZodNumber;
|
|
892
899
|
}, import("zod/v4/core").$strict>>;
|
|
900
|
+
recipient_key_replaced_at: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
893
901
|
}, import("zod/v4/core").$strict>>;
|
|
894
902
|
merchant_id: import("zod").ZodString;
|
|
895
903
|
connected_account: import("zod").ZodNullable<import("zod").ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, import("zod/v4/core").$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -1071,6 +1079,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
1071
1079
|
fraudulent: "fraudulent";
|
|
1072
1080
|
abandoned: "abandoned";
|
|
1073
1081
|
automatic: "automatic";
|
|
1082
|
+
recipient_key_changed: "recipient_key_changed";
|
|
1074
1083
|
requested_by_customer: "requested_by_customer";
|
|
1075
1084
|
underpaid: "underpaid";
|
|
1076
1085
|
}>>;
|
|
@@ -1137,6 +1146,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
1137
1146
|
quoted_at: import("zod").ZodNumber;
|
|
1138
1147
|
expires_at: import("zod").ZodNumber;
|
|
1139
1148
|
}, import("zod/v4/core").$strict>>;
|
|
1149
|
+
recipient_key_replaced_at: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
1140
1150
|
}, import("zod/v4/core").$strict>>;
|
|
1141
1151
|
merchant_id: import("zod").ZodString;
|
|
1142
1152
|
connected_account: import("zod").ZodNullable<import("zod").ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, import("zod/v4/core").$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -1272,6 +1282,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
1272
1282
|
fraudulent: "fraudulent";
|
|
1273
1283
|
abandoned: "abandoned";
|
|
1274
1284
|
automatic: "automatic";
|
|
1285
|
+
recipient_key_changed: "recipient_key_changed";
|
|
1275
1286
|
requested_by_customer: "requested_by_customer";
|
|
1276
1287
|
underpaid: "underpaid";
|
|
1277
1288
|
}>>;
|
|
@@ -1338,6 +1349,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
1338
1349
|
quoted_at: import("zod").ZodNumber;
|
|
1339
1350
|
expires_at: import("zod").ZodNumber;
|
|
1340
1351
|
}, import("zod/v4/core").$strict>>;
|
|
1352
|
+
recipient_key_replaced_at: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
1341
1353
|
}, import("zod/v4/core").$strict>>;
|
|
1342
1354
|
merchant_id: import("zod").ZodString;
|
|
1343
1355
|
connected_account: import("zod").ZodNullable<import("zod").ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, import("zod/v4/core").$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -1478,6 +1490,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
1478
1490
|
fraudulent: "fraudulent";
|
|
1479
1491
|
abandoned: "abandoned";
|
|
1480
1492
|
automatic: "automatic";
|
|
1493
|
+
recipient_key_changed: "recipient_key_changed";
|
|
1481
1494
|
requested_by_customer: "requested_by_customer";
|
|
1482
1495
|
underpaid: "underpaid";
|
|
1483
1496
|
}>>;
|
|
@@ -1544,6 +1557,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
1544
1557
|
quoted_at: import("zod").ZodNumber;
|
|
1545
1558
|
expires_at: import("zod").ZodNumber;
|
|
1546
1559
|
}, import("zod/v4/core").$strict>>;
|
|
1560
|
+
recipient_key_replaced_at: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
1547
1561
|
}, import("zod/v4/core").$strict>>;
|
|
1548
1562
|
merchant_id: import("zod").ZodString;
|
|
1549
1563
|
connected_account: import("zod").ZodNullable<import("zod").ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, import("zod/v4/core").$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -1677,6 +1691,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
1677
1691
|
fraudulent: "fraudulent";
|
|
1678
1692
|
abandoned: "abandoned";
|
|
1679
1693
|
automatic: "automatic";
|
|
1694
|
+
recipient_key_changed: "recipient_key_changed";
|
|
1680
1695
|
requested_by_customer: "requested_by_customer";
|
|
1681
1696
|
underpaid: "underpaid";
|
|
1682
1697
|
}>>;
|
|
@@ -1743,6 +1758,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
1743
1758
|
quoted_at: import("zod").ZodNumber;
|
|
1744
1759
|
expires_at: import("zod").ZodNumber;
|
|
1745
1760
|
}, import("zod/v4/core").$strict>>;
|
|
1761
|
+
recipient_key_replaced_at: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
1746
1762
|
}, import("zod/v4/core").$strict>>;
|
|
1747
1763
|
merchant_id: import("zod").ZodString;
|
|
1748
1764
|
connected_account: import("zod").ZodNullable<import("zod").ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, import("zod/v4/core").$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -1876,6 +1892,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
1876
1892
|
fraudulent: "fraudulent";
|
|
1877
1893
|
abandoned: "abandoned";
|
|
1878
1894
|
automatic: "automatic";
|
|
1895
|
+
recipient_key_changed: "recipient_key_changed";
|
|
1879
1896
|
requested_by_customer: "requested_by_customer";
|
|
1880
1897
|
underpaid: "underpaid";
|
|
1881
1898
|
}>>;
|
|
@@ -1942,6 +1959,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
1942
1959
|
quoted_at: import("zod").ZodNumber;
|
|
1943
1960
|
expires_at: import("zod").ZodNumber;
|
|
1944
1961
|
}, import("zod/v4/core").$strict>>;
|
|
1962
|
+
recipient_key_replaced_at: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
1945
1963
|
}, import("zod/v4/core").$strict>>;
|
|
1946
1964
|
merchant_id: import("zod").ZodString;
|
|
1947
1965
|
connected_account: import("zod").ZodNullable<import("zod").ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, import("zod/v4/core").$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -3710,6 +3728,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
3710
3728
|
readonly path: "/v1/social/me/cursor";
|
|
3711
3729
|
readonly tag: "Social payments";
|
|
3712
3730
|
readonly summary: "Retrieve the caller's receive cursor";
|
|
3731
|
+
readonly description: "How far the caller's receive tree has been reserved, the key the last reservation used, and the caller's current `#key-1` read fresh from Oxy (ADR 0002). A 503 when Oxy cannot be asked for the current key.";
|
|
3713
3732
|
readonly auth: "user";
|
|
3714
3733
|
readonly query: import("zod").ZodObject<{
|
|
3715
3734
|
network: import("zod").ZodEnum<{
|
|
@@ -3720,6 +3739,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
3720
3739
|
readonly response: import("zod").ZodObject<{
|
|
3721
3740
|
reserved_through: import("zod").ZodNumber;
|
|
3722
3741
|
identity_public_key: import("zod").ZodNullable<import("zod").ZodString>;
|
|
3742
|
+
account_identity_public_key: import("zod").ZodNullable<import("zod").ZodString>;
|
|
3723
3743
|
}, import("zod/v4/core").$strict>;
|
|
3724
3744
|
}, {
|
|
3725
3745
|
readonly operationId: "listSocialPayments";
|
|
@@ -3895,6 +3915,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
3895
3915
|
fraudulent: "fraudulent";
|
|
3896
3916
|
abandoned: "abandoned";
|
|
3897
3917
|
automatic: "automatic";
|
|
3918
|
+
recipient_key_changed: "recipient_key_changed";
|
|
3898
3919
|
requested_by_customer: "requested_by_customer";
|
|
3899
3920
|
underpaid: "underpaid";
|
|
3900
3921
|
}>>;
|
|
@@ -3961,6 +3982,7 @@ export declare const paymentsRoutes: readonly [{
|
|
|
3961
3982
|
quoted_at: import("zod").ZodNumber;
|
|
3962
3983
|
expires_at: import("zod").ZodNumber;
|
|
3963
3984
|
}, import("zod/v4/core").$strict>>;
|
|
3985
|
+
recipient_key_replaced_at: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
3964
3986
|
}, import("zod/v4/core").$strict>>;
|
|
3965
3987
|
merchant_id: import("zod").ZodString;
|
|
3966
3988
|
connected_account: import("zod").ZodNullable<import("zod").ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, import("zod/v4/core").$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -141,6 +141,7 @@ export declare const paymentIntentFaircoinSchema: z.ZodObject<{
|
|
|
141
141
|
quoted_at: z.ZodNumber;
|
|
142
142
|
expires_at: z.ZodNumber;
|
|
143
143
|
}, z.core.$strict>>;
|
|
144
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
144
145
|
}, z.core.$strict>;
|
|
145
146
|
export type PaymentIntentFaircoin = z.output<typeof paymentIntentFaircoinSchema>;
|
|
146
147
|
/** Where a destination charge's funds go (`transfer_data`, ADR 0015 §2). */
|
|
@@ -265,6 +266,7 @@ export declare const paymentIntentSchema: z.ZodObject<{
|
|
|
265
266
|
fraudulent: "fraudulent";
|
|
266
267
|
abandoned: "abandoned";
|
|
267
268
|
automatic: "automatic";
|
|
269
|
+
recipient_key_changed: "recipient_key_changed";
|
|
268
270
|
requested_by_customer: "requested_by_customer";
|
|
269
271
|
underpaid: "underpaid";
|
|
270
272
|
}>>;
|
|
@@ -331,6 +333,7 @@ export declare const paymentIntentSchema: z.ZodObject<{
|
|
|
331
333
|
quoted_at: z.ZodNumber;
|
|
332
334
|
expires_at: z.ZodNumber;
|
|
333
335
|
}, z.core.$strict>>;
|
|
336
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
334
337
|
}, z.core.$strict>>;
|
|
335
338
|
merchant_id: z.ZodString;
|
|
336
339
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -771,6 +774,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
771
774
|
fraudulent: "fraudulent";
|
|
772
775
|
abandoned: "abandoned";
|
|
773
776
|
automatic: "automatic";
|
|
777
|
+
recipient_key_changed: "recipient_key_changed";
|
|
774
778
|
requested_by_customer: "requested_by_customer";
|
|
775
779
|
underpaid: "underpaid";
|
|
776
780
|
}>>;
|
|
@@ -837,6 +841,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
837
841
|
quoted_at: z.ZodNumber;
|
|
838
842
|
expires_at: z.ZodNumber;
|
|
839
843
|
}, z.core.$strict>>;
|
|
844
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
840
845
|
}, z.core.$strict>>;
|
|
841
846
|
merchant_id: z.ZodString;
|
|
842
847
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -993,6 +998,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
993
998
|
fraudulent: "fraudulent";
|
|
994
999
|
abandoned: "abandoned";
|
|
995
1000
|
automatic: "automatic";
|
|
1001
|
+
recipient_key_changed: "recipient_key_changed";
|
|
996
1002
|
requested_by_customer: "requested_by_customer";
|
|
997
1003
|
underpaid: "underpaid";
|
|
998
1004
|
}>>;
|
|
@@ -1059,6 +1065,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
1059
1065
|
quoted_at: z.ZodNumber;
|
|
1060
1066
|
expires_at: z.ZodNumber;
|
|
1061
1067
|
}, z.core.$strict>>;
|
|
1068
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
1062
1069
|
}, z.core.$strict>>;
|
|
1063
1070
|
merchant_id: z.ZodString;
|
|
1064
1071
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -1196,6 +1203,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
1196
1203
|
fraudulent: "fraudulent";
|
|
1197
1204
|
abandoned: "abandoned";
|
|
1198
1205
|
automatic: "automatic";
|
|
1206
|
+
recipient_key_changed: "recipient_key_changed";
|
|
1199
1207
|
requested_by_customer: "requested_by_customer";
|
|
1200
1208
|
underpaid: "underpaid";
|
|
1201
1209
|
}>>;
|
|
@@ -1262,6 +1270,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
1262
1270
|
quoted_at: z.ZodNumber;
|
|
1263
1271
|
expires_at: z.ZodNumber;
|
|
1264
1272
|
}, z.core.$strict>>;
|
|
1273
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
1265
1274
|
}, z.core.$strict>>;
|
|
1266
1275
|
merchant_id: z.ZodString;
|
|
1267
1276
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -1413,6 +1422,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
1413
1422
|
fraudulent: "fraudulent";
|
|
1414
1423
|
abandoned: "abandoned";
|
|
1415
1424
|
automatic: "automatic";
|
|
1425
|
+
recipient_key_changed: "recipient_key_changed";
|
|
1416
1426
|
requested_by_customer: "requested_by_customer";
|
|
1417
1427
|
underpaid: "underpaid";
|
|
1418
1428
|
}>>;
|
|
@@ -1479,6 +1489,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
1479
1489
|
quoted_at: z.ZodNumber;
|
|
1480
1490
|
expires_at: z.ZodNumber;
|
|
1481
1491
|
}, z.core.$strict>>;
|
|
1492
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
1482
1493
|
}, z.core.$strict>>;
|
|
1483
1494
|
merchant_id: z.ZodString;
|
|
1484
1495
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -1660,6 +1671,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
1660
1671
|
fraudulent: "fraudulent";
|
|
1661
1672
|
abandoned: "abandoned";
|
|
1662
1673
|
automatic: "automatic";
|
|
1674
|
+
recipient_key_changed: "recipient_key_changed";
|
|
1663
1675
|
requested_by_customer: "requested_by_customer";
|
|
1664
1676
|
underpaid: "underpaid";
|
|
1665
1677
|
}>>;
|
|
@@ -1726,6 +1738,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
1726
1738
|
quoted_at: z.ZodNumber;
|
|
1727
1739
|
expires_at: z.ZodNumber;
|
|
1728
1740
|
}, z.core.$strict>>;
|
|
1741
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
1729
1742
|
}, z.core.$strict>>;
|
|
1730
1743
|
merchant_id: z.ZodString;
|
|
1731
1744
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -1861,6 +1874,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
1861
1874
|
fraudulent: "fraudulent";
|
|
1862
1875
|
abandoned: "abandoned";
|
|
1863
1876
|
automatic: "automatic";
|
|
1877
|
+
recipient_key_changed: "recipient_key_changed";
|
|
1864
1878
|
requested_by_customer: "requested_by_customer";
|
|
1865
1879
|
underpaid: "underpaid";
|
|
1866
1880
|
}>>;
|
|
@@ -1927,6 +1941,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
1927
1941
|
quoted_at: z.ZodNumber;
|
|
1928
1942
|
expires_at: z.ZodNumber;
|
|
1929
1943
|
}, z.core.$strict>>;
|
|
1944
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
1930
1945
|
}, z.core.$strict>>;
|
|
1931
1946
|
merchant_id: z.ZodString;
|
|
1932
1947
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -2067,6 +2082,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
2067
2082
|
fraudulent: "fraudulent";
|
|
2068
2083
|
abandoned: "abandoned";
|
|
2069
2084
|
automatic: "automatic";
|
|
2085
|
+
recipient_key_changed: "recipient_key_changed";
|
|
2070
2086
|
requested_by_customer: "requested_by_customer";
|
|
2071
2087
|
underpaid: "underpaid";
|
|
2072
2088
|
}>>;
|
|
@@ -2133,6 +2149,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
2133
2149
|
quoted_at: z.ZodNumber;
|
|
2134
2150
|
expires_at: z.ZodNumber;
|
|
2135
2151
|
}, z.core.$strict>>;
|
|
2152
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
2136
2153
|
}, z.core.$strict>>;
|
|
2137
2154
|
merchant_id: z.ZodString;
|
|
2138
2155
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -2266,6 +2283,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
2266
2283
|
fraudulent: "fraudulent";
|
|
2267
2284
|
abandoned: "abandoned";
|
|
2268
2285
|
automatic: "automatic";
|
|
2286
|
+
recipient_key_changed: "recipient_key_changed";
|
|
2269
2287
|
requested_by_customer: "requested_by_customer";
|
|
2270
2288
|
underpaid: "underpaid";
|
|
2271
2289
|
}>>;
|
|
@@ -2332,6 +2350,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
2332
2350
|
quoted_at: z.ZodNumber;
|
|
2333
2351
|
expires_at: z.ZodNumber;
|
|
2334
2352
|
}, z.core.$strict>>;
|
|
2353
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
2335
2354
|
}, z.core.$strict>>;
|
|
2336
2355
|
merchant_id: z.ZodString;
|
|
2337
2356
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -2465,6 +2484,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
2465
2484
|
fraudulent: "fraudulent";
|
|
2466
2485
|
abandoned: "abandoned";
|
|
2467
2486
|
automatic: "automatic";
|
|
2487
|
+
recipient_key_changed: "recipient_key_changed";
|
|
2468
2488
|
requested_by_customer: "requested_by_customer";
|
|
2469
2489
|
underpaid: "underpaid";
|
|
2470
2490
|
}>>;
|
|
@@ -2531,6 +2551,7 @@ export declare const paymentIntentRoutes: readonly [{
|
|
|
2531
2551
|
quoted_at: z.ZodNumber;
|
|
2532
2552
|
expires_at: z.ZodNumber;
|
|
2533
2553
|
}, z.core.$strict>>;
|
|
2554
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
2534
2555
|
}, z.core.$strict>>;
|
|
2535
2556
|
merchant_id: z.ZodString;
|
|
2536
2557
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -76,6 +76,7 @@ export type SocialReceiveCursorParams = z.input<typeof socialReceiveCursorQuery>
|
|
|
76
76
|
export declare const socialReceiveCursorSchema: z.ZodObject<{
|
|
77
77
|
reserved_through: z.ZodNumber;
|
|
78
78
|
identity_public_key: z.ZodNullable<z.ZodString>;
|
|
79
|
+
account_identity_public_key: z.ZodNullable<z.ZodString>;
|
|
79
80
|
}, z.core.$strict>;
|
|
80
81
|
export type SocialReceiveCursorResponse = z.output<typeof socialReceiveCursorSchema>;
|
|
81
82
|
export declare const socialPaymentsQuery: z.ZodObject<{
|
|
@@ -190,6 +191,7 @@ export declare const socialRoutes: readonly [{
|
|
|
190
191
|
readonly path: "/v1/social/me/cursor";
|
|
191
192
|
readonly tag: "Social payments";
|
|
192
193
|
readonly summary: "Retrieve the caller's receive cursor";
|
|
194
|
+
readonly description: "How far the caller's receive tree has been reserved, the key the last reservation used, and the caller's current `#key-1` read fresh from Oxy (ADR 0002). A 503 when Oxy cannot be asked for the current key.";
|
|
193
195
|
readonly auth: "user";
|
|
194
196
|
readonly query: z.ZodObject<{
|
|
195
197
|
network: z.ZodEnum<{
|
|
@@ -200,6 +202,7 @@ export declare const socialRoutes: readonly [{
|
|
|
200
202
|
readonly response: z.ZodObject<{
|
|
201
203
|
reserved_through: z.ZodNumber;
|
|
202
204
|
identity_public_key: z.ZodNullable<z.ZodString>;
|
|
205
|
+
account_identity_public_key: z.ZodNullable<z.ZodString>;
|
|
203
206
|
}, z.core.$strict>;
|
|
204
207
|
}, {
|
|
205
208
|
readonly operationId: "listSocialPayments";
|
|
@@ -124,6 +124,7 @@ export declare const paymentIntentTestHelperRoutes: readonly [{
|
|
|
124
124
|
fraudulent: "fraudulent";
|
|
125
125
|
abandoned: "abandoned";
|
|
126
126
|
automatic: "automatic";
|
|
127
|
+
recipient_key_changed: "recipient_key_changed";
|
|
127
128
|
requested_by_customer: "requested_by_customer";
|
|
128
129
|
underpaid: "underpaid";
|
|
129
130
|
}>>;
|
|
@@ -190,6 +191,7 @@ export declare const paymentIntentTestHelperRoutes: readonly [{
|
|
|
190
191
|
quoted_at: z.ZodNumber;
|
|
191
192
|
expires_at: z.ZodNumber;
|
|
192
193
|
}, z.core.$strict>>;
|
|
194
|
+
recipient_key_replaced_at: z.ZodNullable<z.ZodNumber>;
|
|
193
195
|
}, z.core.$strict>>;
|
|
194
196
|
merchant_id: z.ZodString;
|
|
195
197
|
connected_account: z.ZodNullable<z.ZodType<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">, z.core.$ZodTypeInternals<string | import("../..").Ref<"connected_account">, string | import("../..").Ref<"connected_account">>>>;
|
|
@@ -13,10 +13,14 @@ export type PaymentIntentRail = (typeof PAYMENT_INTENT_RAILS)[number];
|
|
|
13
13
|
export declare const PAYMENT_INTENT_STATUSES: readonly ["requires_payment_method", "requires_confirmation", "requires_action", "processing", "requires_capture", "succeeded", "canceled"];
|
|
14
14
|
export type PaymentIntentStatus = (typeof PAYMENT_INTENT_STATUSES)[number];
|
|
15
15
|
/**
|
|
16
|
-
* Why an intent was cancelled — Stripe's reasons, plus
|
|
17
|
-
*
|
|
16
|
+
* Why an intent was cancelled — Stripe's reasons, plus two FairCoin-only ones:
|
|
17
|
+
* `underpaid` (a transaction paid less than the amount) and
|
|
18
|
+
* `recipient_key_changed` (the recipient's identity key was replaced after the
|
|
19
|
+
* address was reserved, so the address is no longer in the wallet it pays —
|
|
20
|
+
* ADR 0002, amended 2026-11-06; nothing had been broadcast, and the order stays
|
|
21
|
+
* open for a fresh address).
|
|
18
22
|
*/
|
|
19
|
-
export declare const PAYMENT_INTENT_CANCELLATION_REASONS: readonly ["abandoned", "automatic", "duplicate", "fraudulent", "requested_by_customer", "underpaid"];
|
|
23
|
+
export declare const PAYMENT_INTENT_CANCELLATION_REASONS: readonly ["abandoned", "automatic", "duplicate", "fraudulent", "recipient_key_changed", "requested_by_customer", "underpaid"];
|
|
20
24
|
export type PaymentIntentCancellationReason = (typeof PAYMENT_INTENT_CANCELLATION_REASONS)[number];
|
|
21
25
|
/** The reasons a MERCHANT may give `POST /v1/payment_intents/:id/cancel`. */
|
|
22
26
|
export declare const MERCHANT_CANCELLATION_REASONS: readonly ["abandoned", "duplicate", "fraudulent", "requested_by_customer"];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The PAYER realtime endpoint: the Socket.IO path a payer's browser opens to
|
|
3
|
+
* hear its payment move, by the intent's `client_secret` alone.
|
|
4
|
+
*
|
|
5
|
+
* It is a SEPARATE Socket.IO server from the gateway's default `/socket.io/`
|
|
6
|
+
* one, because Socket.IO decides CORS per server (per engine), before it
|
|
7
|
+
* knows which namespace or token a connection carries. The payer server
|
|
8
|
+
* answers any origin and takes no credentials — the same rule as the payer
|
|
9
|
+
* HTTP routes (`lib/payerCors.ts`): a merchant's own site runs Pay with
|
|
10
|
+
* Peable, and the capability is the secret, never the page. The default
|
|
11
|
+
* server keeps the Oxy origins (`createOxySocketCors`) for every socket that
|
|
12
|
+
* carries an Oxy identity.
|
|
13
|
+
*/
|
|
14
|
+
export declare const PAYER_SOCKET_PATH = "/payer-socket.io";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peable.to/contracts",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.2.0",
|
|
4
4
|
"description": "The Peable wire, declared once: Zod contracts of every public route, the OpenAPI 3.1 generator and the closed value sets (ADR 0014 D5).",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|