@p2pdotme/sdk 1.2.5 → 1.2.7
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/country.cjs +1 -1
- package/dist/country.cjs.map +1 -1
- package/dist/country.mjs +1 -1
- package/dist/country.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/orders.cjs +46 -0
- package/dist/orders.cjs.map +1 -1
- package/dist/orders.mjs +46 -0
- package/dist/orders.mjs.map +1 -1
- package/dist/prices.cjs +46 -0
- package/dist/prices.cjs.map +1 -1
- package/dist/prices.mjs +46 -0
- package/dist/prices.mjs.map +1 -1
- package/dist/profile.cjs +46 -0
- package/dist/profile.cjs.map +1 -1
- package/dist/profile.mjs +46 -0
- package/dist/profile.mjs.map +1 -1
- package/dist/qr-parsers.cjs +1 -1
- package/dist/qr-parsers.cjs.map +1 -1
- package/dist/qr-parsers.mjs +1 -1
- package/dist/qr-parsers.mjs.map +1 -1
- package/dist/react.cjs +75 -1
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +12 -1
- package/dist/react.d.ts +12 -1
- package/dist/react.mjs +75 -1
- package/dist/react.mjs.map +1 -1
- package/dist/stake.cjs +32 -0
- package/dist/stake.cjs.map +1 -1
- package/dist/stake.mjs +32 -0
- package/dist/stake.mjs.map +1 -1
- package/dist/zkkyc.cjs +228 -10
- package/dist/zkkyc.cjs.map +1 -1
- package/dist/zkkyc.d.cts +97 -2
- package/dist/zkkyc.d.ts +97 -2
- package/dist/zkkyc.mjs +226 -10
- package/dist/zkkyc.mjs.map +1 -1
- package/package.json +1 -1
package/dist/zkkyc.cjs
CHANGED
|
@@ -30,12 +30,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/zkkyc/index.ts
|
|
31
31
|
var zkkyc_exports = {};
|
|
32
32
|
__export(zkkyc_exports, {
|
|
33
|
+
BVN_OTP_METHODS: () => BVN_OTP_METHODS,
|
|
33
34
|
DEFAULT_RECLAIM_PROVIDER_IDS: () => DEFAULT_RECLAIM_PROVIDER_IDS,
|
|
34
35
|
RECLAIM_APP_LINKS: () => RECLAIM_APP_LINKS,
|
|
35
36
|
SIMPLE_KYC_DEFAULT_TENANT: () => SIMPLE_KYC_DEFAULT_TENANT,
|
|
36
37
|
SOCIAL_PLATFORM_NAMES: () => SOCIAL_PLATFORM_NAMES,
|
|
37
38
|
ZK_PASSPORT_APP_LINKS: () => ZK_PASSPORT_APP_LINKS,
|
|
38
39
|
ZkkycError: () => ZkkycError,
|
|
40
|
+
createBvnFlow: () => createBvnFlow,
|
|
39
41
|
createReclaimFlow: () => createReclaimFlow,
|
|
40
42
|
createSimpleKycFlow: () => createSimpleKycFlow,
|
|
41
43
|
createZkPassportFlow: () => createZkPassportFlow,
|
|
@@ -188,6 +190,20 @@ var ZodSimpleKycSubmitParamsSchema = import_zod2.z.object({
|
|
|
188
190
|
message: "signature must be a hex string"
|
|
189
191
|
})
|
|
190
192
|
});
|
|
193
|
+
var ZodBvnSubmitParamsSchema = import_zod2.z.object({
|
|
194
|
+
/** Per-(tenant, identity) Sybil nullifier (bytes32 hex). */
|
|
195
|
+
nullifier: import_zod2.z.string().refine((v) => /^0x[a-fA-F0-9]{64}$/.test(v), {
|
|
196
|
+
message: "nullifier must be a bytes32 hex string"
|
|
197
|
+
}),
|
|
198
|
+
/** Remaining limit in micro-USDC (part of the signed struct). */
|
|
199
|
+
limit: import_zod2.z.bigint(),
|
|
200
|
+
/** Attestation expiry (unix seconds). */
|
|
201
|
+
expiry: import_zod2.z.bigint(),
|
|
202
|
+
/** 65-byte secp256k1 signature (hex). */
|
|
203
|
+
signature: import_zod2.z.string().refine((v) => /^0x[a-fA-F0-9]+$/.test(v), {
|
|
204
|
+
message: "signature must be a hex string"
|
|
205
|
+
})
|
|
206
|
+
});
|
|
191
207
|
|
|
192
208
|
// src/contracts/abis/index.ts
|
|
193
209
|
var import_viem2 = require("viem");
|
|
@@ -992,6 +1008,38 @@ var reputationManagerAbi = [
|
|
|
992
1008
|
outputs: [{ internalType: "bool", name: "", type: "bool" }],
|
|
993
1009
|
stateMutability: "view",
|
|
994
1010
|
type: "function"
|
|
1011
|
+
},
|
|
1012
|
+
// ── BVN (Nigerian Bank Verification Number) attestation ─────────────────
|
|
1013
|
+
{ inputs: [], name: "BvnSignerNotSet", type: "error" },
|
|
1014
|
+
{ inputs: [], name: "BvnAttestationExpired", type: "error" },
|
|
1015
|
+
{ inputs: [], name: "BvnNullifierAlreadySpent", type: "error" },
|
|
1016
|
+
{ inputs: [], name: "BvnAlreadyVerified", type: "error" },
|
|
1017
|
+
{ inputs: [], name: "BvnInvalidSignature", type: "error" },
|
|
1018
|
+
{
|
|
1019
|
+
inputs: [
|
|
1020
|
+
{ internalType: "bytes32", name: "nullifier", type: "bytes32" },
|
|
1021
|
+
{ internalType: "uint256", name: "limit", type: "uint256" },
|
|
1022
|
+
{ internalType: "uint256", name: "expiry", type: "uint256" },
|
|
1023
|
+
{ internalType: "bytes", name: "signature", type: "bytes" }
|
|
1024
|
+
],
|
|
1025
|
+
name: "submitBvnAttestation",
|
|
1026
|
+
outputs: [],
|
|
1027
|
+
stateMutability: "nonpayable",
|
|
1028
|
+
type: "function"
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
inputs: [],
|
|
1032
|
+
name: "bvnRp",
|
|
1033
|
+
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
|
|
1034
|
+
stateMutability: "view",
|
|
1035
|
+
type: "function"
|
|
1036
|
+
},
|
|
1037
|
+
{
|
|
1038
|
+
inputs: [{ internalType: "address", name: "", type: "address" }],
|
|
1039
|
+
name: "bvnVerified",
|
|
1040
|
+
outputs: [{ internalType: "bool", name: "", type: "bool" }],
|
|
1041
|
+
stateMutability: "view",
|
|
1042
|
+
type: "function"
|
|
995
1043
|
}
|
|
996
1044
|
];
|
|
997
1045
|
|
|
@@ -1108,6 +1156,33 @@ function prepareSubmitKycAttestation(reputationManagerAddress, params) {
|
|
|
1108
1156
|
)()
|
|
1109
1157
|
);
|
|
1110
1158
|
}
|
|
1159
|
+
function prepareSubmitBvnAttestation(reputationManagerAddress, params) {
|
|
1160
|
+
return validate(
|
|
1161
|
+
ZodBvnSubmitParamsSchema,
|
|
1162
|
+
params,
|
|
1163
|
+
(message, cause, data) => new ZkkycError(message, { code: "VALIDATION_ERROR", cause, context: { params: data } })
|
|
1164
|
+
).andThen(
|
|
1165
|
+
(validated) => import_neverthrow2.Result.fromThrowable(
|
|
1166
|
+
() => ({
|
|
1167
|
+
to: reputationManagerAddress,
|
|
1168
|
+
data: (0, import_viem3.encodeFunctionData)({
|
|
1169
|
+
abi: ABIS.EXTERNAL.REPUTATION_MANAGER,
|
|
1170
|
+
functionName: "submitBvnAttestation",
|
|
1171
|
+
args: [
|
|
1172
|
+
validated.nullifier,
|
|
1173
|
+
validated.limit,
|
|
1174
|
+
validated.expiry,
|
|
1175
|
+
validated.signature
|
|
1176
|
+
]
|
|
1177
|
+
})
|
|
1178
|
+
}),
|
|
1179
|
+
(error) => new ZkkycError("Failed to encode submitBvnAttestation", {
|
|
1180
|
+
code: "ENCODE_ERROR",
|
|
1181
|
+
cause: error
|
|
1182
|
+
})
|
|
1183
|
+
)()
|
|
1184
|
+
);
|
|
1185
|
+
}
|
|
1111
1186
|
function prepareZkPassportRegister(reputationManagerAddress, params) {
|
|
1112
1187
|
return validate(
|
|
1113
1188
|
ZodZkPassportRegisterParamsSchema,
|
|
@@ -1156,7 +1231,8 @@ function createZkkyc(config) {
|
|
|
1156
1231
|
prepareSocialVerify: (params) => prepareSocialVerify(reputationManagerAddress, params),
|
|
1157
1232
|
prepareSubmitAnonAadharProof: (params) => prepareSubmitAnonAadharProof(reputationManagerAddress, params),
|
|
1158
1233
|
prepareZkPassportRegister: (params) => prepareZkPassportRegister(reputationManagerAddress, params),
|
|
1159
|
-
prepareSubmitKycAttestation: (params) => prepareSubmitKycAttestation(reputationManagerAddress, params)
|
|
1234
|
+
prepareSubmitKycAttestation: (params) => prepareSubmitKycAttestation(reputationManagerAddress, params),
|
|
1235
|
+
prepareSubmitBvnAttestation: (params) => prepareSubmitBvnAttestation(reputationManagerAddress, params)
|
|
1160
1236
|
};
|
|
1161
1237
|
}
|
|
1162
1238
|
|
|
@@ -1177,9 +1253,149 @@ var RECLAIM_APP_LINKS = {
|
|
|
1177
1253
|
ANDROID: "https://play.google.com/store/apps/details?id=org.reclaimprotocol.app"
|
|
1178
1254
|
};
|
|
1179
1255
|
var SIMPLE_KYC_DEFAULT_TENANT = "p2p-reputation";
|
|
1256
|
+
var BVN_OTP_METHODS = ["email", "phone", "phone_1", "alternate_phone"];
|
|
1180
1257
|
|
|
1181
|
-
// src/zkkyc/orchestrators/
|
|
1258
|
+
// src/zkkyc/orchestrators/bvn.ts
|
|
1182
1259
|
var import_neverthrow3 = require("neverthrow");
|
|
1260
|
+
function createBvnFlow(config) {
|
|
1261
|
+
const { baseUrl, tenant } = config;
|
|
1262
|
+
async function request(path, failureCode, init, parse) {
|
|
1263
|
+
const response = await fetch(`${baseUrl}${path}`, init);
|
|
1264
|
+
const body = await response.json().catch(() => null);
|
|
1265
|
+
const envelope = body && typeof body === "object" ? body : {};
|
|
1266
|
+
if (!response.ok || envelope.ok === false) {
|
|
1267
|
+
const code = typeof envelope.error === "string" ? envelope.error : "request_failed";
|
|
1268
|
+
const message = typeof envelope.message === "string" ? envelope.message : `BVN request failed (${response.status})`;
|
|
1269
|
+
const isSessionExpired = response.status === 401 || code === "unauthorized";
|
|
1270
|
+
throw new ZkkycError(message, {
|
|
1271
|
+
code: isSessionExpired ? "BVN_SESSION_EXPIRED" : failureCode,
|
|
1272
|
+
context: { status: response.status, backendError: code, path }
|
|
1273
|
+
});
|
|
1274
|
+
}
|
|
1275
|
+
return parse(envelope.data);
|
|
1276
|
+
}
|
|
1277
|
+
function run(failureCode, fn) {
|
|
1278
|
+
return import_neverthrow3.ResultAsync.fromPromise(fn(), (error) => {
|
|
1279
|
+
if (error instanceof ZkkycError) return error;
|
|
1280
|
+
return new ZkkycError("BVN request failed", { code: failureCode, cause: error });
|
|
1281
|
+
});
|
|
1282
|
+
}
|
|
1283
|
+
function authHeaders(token) {
|
|
1284
|
+
return { "content-type": "application/json", "x-session-token": token };
|
|
1285
|
+
}
|
|
1286
|
+
return {
|
|
1287
|
+
onboard(params) {
|
|
1288
|
+
return run(
|
|
1289
|
+
"BVN_ONBOARD_FAILED",
|
|
1290
|
+
() => request(
|
|
1291
|
+
"/v1/onboard",
|
|
1292
|
+
"BVN_ONBOARD_FAILED",
|
|
1293
|
+
{
|
|
1294
|
+
method: "POST",
|
|
1295
|
+
headers: { "content-type": "application/json" },
|
|
1296
|
+
body: JSON.stringify({
|
|
1297
|
+
tenant,
|
|
1298
|
+
wallet: params.walletAddress,
|
|
1299
|
+
scope: params.scope ?? "identity"
|
|
1300
|
+
})
|
|
1301
|
+
},
|
|
1302
|
+
(data) => {
|
|
1303
|
+
const d = data;
|
|
1304
|
+
return { sessionId: d.session_id, sessionToken: d.session_token };
|
|
1305
|
+
}
|
|
1306
|
+
)
|
|
1307
|
+
);
|
|
1308
|
+
},
|
|
1309
|
+
submitBvn(session, bvn) {
|
|
1310
|
+
return run(
|
|
1311
|
+
"BVN_SUBMIT_FAILED",
|
|
1312
|
+
() => request(
|
|
1313
|
+
`/v1/sessions/${session.sessionId}/bvn`,
|
|
1314
|
+
"BVN_SUBMIT_FAILED",
|
|
1315
|
+
{
|
|
1316
|
+
method: "POST",
|
|
1317
|
+
headers: authHeaders(session.sessionToken),
|
|
1318
|
+
body: JSON.stringify({ bvn })
|
|
1319
|
+
},
|
|
1320
|
+
(data) => data.methods
|
|
1321
|
+
)
|
|
1322
|
+
);
|
|
1323
|
+
},
|
|
1324
|
+
sendOtp(session, params) {
|
|
1325
|
+
return run(
|
|
1326
|
+
"BVN_OTP_SEND_FAILED",
|
|
1327
|
+
() => request(
|
|
1328
|
+
`/v1/sessions/${session.sessionId}/otp`,
|
|
1329
|
+
"BVN_OTP_SEND_FAILED",
|
|
1330
|
+
{
|
|
1331
|
+
method: "POST",
|
|
1332
|
+
headers: authHeaders(session.sessionToken),
|
|
1333
|
+
body: JSON.stringify({
|
|
1334
|
+
method: params.method,
|
|
1335
|
+
...params.method === "alternate_phone" && params.phoneNumber ? { phone_number: params.phoneNumber } : {}
|
|
1336
|
+
})
|
|
1337
|
+
},
|
|
1338
|
+
(data) => data.sent
|
|
1339
|
+
)
|
|
1340
|
+
);
|
|
1341
|
+
},
|
|
1342
|
+
confirmOtp(session, otp) {
|
|
1343
|
+
return run(
|
|
1344
|
+
"BVN_OTP_CONFIRM_FAILED",
|
|
1345
|
+
() => request(
|
|
1346
|
+
`/v1/sessions/${session.sessionId}/otp/confirm`,
|
|
1347
|
+
"BVN_OTP_CONFIRM_FAILED",
|
|
1348
|
+
{
|
|
1349
|
+
method: "POST",
|
|
1350
|
+
headers: authHeaders(session.sessionToken),
|
|
1351
|
+
body: JSON.stringify({ otp })
|
|
1352
|
+
},
|
|
1353
|
+
(data) => {
|
|
1354
|
+
const d = data;
|
|
1355
|
+
return { decision: d.decision, reason: d.reason };
|
|
1356
|
+
}
|
|
1357
|
+
)
|
|
1358
|
+
);
|
|
1359
|
+
},
|
|
1360
|
+
getAttestation(session) {
|
|
1361
|
+
return run(
|
|
1362
|
+
"BVN_ATTESTATION_FAILED",
|
|
1363
|
+
() => request(
|
|
1364
|
+
`/v1/sessions/${session.sessionId}/attestation`,
|
|
1365
|
+
"BVN_ATTESTATION_FAILED",
|
|
1366
|
+
{
|
|
1367
|
+
method: "POST",
|
|
1368
|
+
headers: { "x-session-token": session.sessionToken }
|
|
1369
|
+
},
|
|
1370
|
+
(data) => {
|
|
1371
|
+
const d = data;
|
|
1372
|
+
return {
|
|
1373
|
+
nullifier: d.message.nullifier,
|
|
1374
|
+
limit: BigInt(d.message.limit),
|
|
1375
|
+
expiry: BigInt(d.message.expiry),
|
|
1376
|
+
signature: d.signature,
|
|
1377
|
+
wallet: d.message.wallet
|
|
1378
|
+
};
|
|
1379
|
+
}
|
|
1380
|
+
)
|
|
1381
|
+
);
|
|
1382
|
+
},
|
|
1383
|
+
getAttestor() {
|
|
1384
|
+
return run(
|
|
1385
|
+
"BVN_ATTESTATION_FAILED",
|
|
1386
|
+
() => request(
|
|
1387
|
+
"/v1/attestor",
|
|
1388
|
+
"BVN_ATTESTATION_FAILED",
|
|
1389
|
+
void 0,
|
|
1390
|
+
(data) => data
|
|
1391
|
+
)
|
|
1392
|
+
);
|
|
1393
|
+
}
|
|
1394
|
+
};
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
// src/zkkyc/orchestrators/reclaim.ts
|
|
1398
|
+
var import_neverthrow4 = require("neverthrow");
|
|
1183
1399
|
|
|
1184
1400
|
// src/zkkyc/orchestrators/types.ts
|
|
1185
1401
|
var SOCIAL_PLATFORM_NAMES = {
|
|
@@ -1194,7 +1410,7 @@ var SOCIAL_PLATFORM_NAMES = {
|
|
|
1194
1410
|
// src/zkkyc/orchestrators/reclaim.ts
|
|
1195
1411
|
var RECLAIM_SESSION_API = "https://api.reclaimprotocol.org/api/sdk/session";
|
|
1196
1412
|
function createReclaimFlow(params) {
|
|
1197
|
-
return
|
|
1413
|
+
return import_neverthrow4.ResultAsync.fromPromise(
|
|
1198
1414
|
(async () => {
|
|
1199
1415
|
const mod = await import("@reclaimprotocol/js-sdk").catch(() => {
|
|
1200
1416
|
throw new ZkkycError(
|
|
@@ -1298,7 +1514,7 @@ function createReclaimFlow(params) {
|
|
|
1298
1514
|
const session = {
|
|
1299
1515
|
sessionId,
|
|
1300
1516
|
requestUrl,
|
|
1301
|
-
start: () =>
|
|
1517
|
+
start: () => import_neverthrow4.ResultAsync.fromPromise(pollForProof(), (error) => {
|
|
1302
1518
|
if (error instanceof ZkkycError) return error;
|
|
1303
1519
|
return new ZkkycError("Reclaim verification flow failed", {
|
|
1304
1520
|
code: "RECLAIM_INIT_FAILED",
|
|
@@ -1322,10 +1538,10 @@ function createReclaimFlow(params) {
|
|
|
1322
1538
|
}
|
|
1323
1539
|
|
|
1324
1540
|
// src/zkkyc/orchestrators/simple-kyc.ts
|
|
1325
|
-
var
|
|
1541
|
+
var import_neverthrow5 = require("neverthrow");
|
|
1326
1542
|
function createSimpleKycFlow(params) {
|
|
1327
1543
|
const { baseUrl, walletAddress, tenant, redirectUrl, country, state, onStatus } = params;
|
|
1328
|
-
return
|
|
1544
|
+
return import_neverthrow5.ResultAsync.fromPromise(
|
|
1329
1545
|
(async () => {
|
|
1330
1546
|
const res = await fetch(`${baseUrl}/v1/widget/public-sessions`, {
|
|
1331
1547
|
method: "POST",
|
|
@@ -1368,7 +1584,7 @@ function createSimpleKycFlow(params) {
|
|
|
1368
1584
|
);
|
|
1369
1585
|
}
|
|
1370
1586
|
function resumeSimpleKycFlow(args) {
|
|
1371
|
-
return
|
|
1587
|
+
return import_neverthrow5.ResultAsync.fromPromise(
|
|
1372
1588
|
(async () => {
|
|
1373
1589
|
const res = await fetch(`${args.baseUrl}/v1/widget/attestation`, {
|
|
1374
1590
|
method: "POST",
|
|
@@ -1402,9 +1618,9 @@ function resumeSimpleKycFlow(args) {
|
|
|
1402
1618
|
}
|
|
1403
1619
|
|
|
1404
1620
|
// src/zkkyc/orchestrators/zk-passport.ts
|
|
1405
|
-
var
|
|
1621
|
+
var import_neverthrow6 = require("neverthrow");
|
|
1406
1622
|
function createZkPassportFlow(params) {
|
|
1407
|
-
return
|
|
1623
|
+
return import_neverthrow6.ResultAsync.fromPromise(
|
|
1408
1624
|
(async () => {
|
|
1409
1625
|
const mod = await import("@zkpassport/sdk").catch(() => {
|
|
1410
1626
|
throw new ZkkycError(
|
|
@@ -1500,7 +1716,7 @@ function createZkPassportFlow(params) {
|
|
|
1500
1716
|
});
|
|
1501
1717
|
const session = {
|
|
1502
1718
|
url,
|
|
1503
|
-
result:
|
|
1719
|
+
result: import_neverthrow6.ResultAsync.fromPromise(resultPromise, (error) => {
|
|
1504
1720
|
if (error instanceof ZkkycError) return error;
|
|
1505
1721
|
return new ZkkycError("ZK Passport flow failed", {
|
|
1506
1722
|
code: "ZK_PASSPORT_VERIFICATION_FAILED",
|
|
@@ -1524,12 +1740,14 @@ function createZkPassportFlow(params) {
|
|
|
1524
1740
|
}
|
|
1525
1741
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1526
1742
|
0 && (module.exports = {
|
|
1743
|
+
BVN_OTP_METHODS,
|
|
1527
1744
|
DEFAULT_RECLAIM_PROVIDER_IDS,
|
|
1528
1745
|
RECLAIM_APP_LINKS,
|
|
1529
1746
|
SIMPLE_KYC_DEFAULT_TENANT,
|
|
1530
1747
|
SOCIAL_PLATFORM_NAMES,
|
|
1531
1748
|
ZK_PASSPORT_APP_LINKS,
|
|
1532
1749
|
ZkkycError,
|
|
1750
|
+
createBvnFlow,
|
|
1533
1751
|
createReclaimFlow,
|
|
1534
1752
|
createSimpleKycFlow,
|
|
1535
1753
|
createZkPassportFlow,
|