@p2pdotme/sdk 1.2.18 → 1.2.19
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 +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/orders.cjs +113 -0
- package/dist/orders.cjs.map +1 -1
- package/dist/orders.d.cts +51 -2
- package/dist/orders.d.ts +51 -2
- package/dist/orders.mjs +113 -0
- package/dist/orders.mjs.map +1 -1
- package/dist/prices.cjs +6 -0
- package/dist/prices.cjs.map +1 -1
- package/dist/prices.mjs +6 -0
- package/dist/prices.mjs.map +1 -1
- package/dist/profile.cjs +6 -0
- package/dist/profile.cjs.map +1 -1
- package/dist/profile.mjs +6 -0
- package/dist/profile.mjs.map +1 -1
- package/dist/react.cjs +193 -22
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +72 -2
- package/dist/react.d.ts +72 -2
- package/dist/react.mjs +179 -9
- package/dist/react.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ bun add @zkpassport/sdk # only for zkkyc ZK Passport flow
|
|
|
25
25
|
| Import | Description |
|
|
26
26
|
|--------|-------------|
|
|
27
27
|
| `@p2pdotme/sdk` | Shared types, `SdkError`, `VERSION` |
|
|
28
|
-
| `@p2pdotme/sdk/orders` | [Order reads + writes](./src/orders/README.md) — `getOrder`, `getOrders`, `getFeeConfig`, and `prepare`/`execute` pairs for `placeOrder`, `cancelOrder`, `setSellOrderUpi`, `raiseDispute`, `approveUsdc` |
|
|
28
|
+
| `@p2pdotme/sdk/orders` | [Order reads + writes](./src/orders/README.md) — `getOrder`, `getOrders`, `getFeeConfig`, `getPlacementLimits`, and `prepare`/`execute` pairs for `placeOrder`, `cancelOrder`, `setSellOrderUpi`, `raiseDispute`, `approveUsdc` |
|
|
29
29
|
| `@p2pdotme/sdk/prices` | [Currency price config](./src/prices/README.md) — `getPriceConfig`, `getReputationPerUsdcLimit` |
|
|
30
30
|
| `@p2pdotme/sdk/profile` | [User-scoped reads](./src/profile/README.md) — USDC balance, USDC allowance, fiat conversion, tx limits |
|
|
31
31
|
| `@p2pdotme/sdk/qr-parsers` | [QR code parsers](./src/qr-parsers/README.md) for UPI, QRIS, PIX, MercadoPago, Pago Movil |
|
package/dist/index.cjs
CHANGED
|
@@ -69,7 +69,7 @@ var ZodAddressSchema = import_zod.z.string().refine((s) => (0, import_viem.isAdd
|
|
|
69
69
|
var ZodCurrencySchema = import_zod.z.enum(CURRENCY_CODES);
|
|
70
70
|
|
|
71
71
|
// src/index.ts
|
|
72
|
-
var VERSION = "1.2.
|
|
72
|
+
var VERSION = "1.2.19";
|
|
73
73
|
// Annotate the CommonJS export names for ESM import in node:
|
|
74
74
|
0 && (module.exports = {
|
|
75
75
|
SdkError,
|
package/dist/index.mjs
CHANGED
package/dist/orders.cjs
CHANGED
|
@@ -1231,6 +1231,9 @@ var ZodGetOrderParamsSchema = import_zod2.z.object({
|
|
|
1231
1231
|
var ZodGetFeeConfigParamsSchema = import_zod2.z.object({
|
|
1232
1232
|
currency: ZodCurrencySchema
|
|
1233
1233
|
});
|
|
1234
|
+
var ZodGetPlacementLimitsParamsSchema = import_zod2.z.object({
|
|
1235
|
+
userAddress: ZodAddressSchema
|
|
1236
|
+
});
|
|
1234
1237
|
var ZodGetOrdersParamsSchema = import_zod2.z.object({
|
|
1235
1238
|
userAddress: ZodAddressSchema,
|
|
1236
1239
|
skip: import_zod2.z.number().int().min(0).default(0),
|
|
@@ -1291,6 +1294,19 @@ var ZodSubgraphOrderSchema = import_zod2.z.object({
|
|
|
1291
1294
|
var ZodSubgraphOrdersResponseSchema = import_zod2.z.object({
|
|
1292
1295
|
orders_collection: import_zod2.z.array(ZodSubgraphOrderSchema)
|
|
1293
1296
|
});
|
|
1297
|
+
var ZodSubgraphPlacementLimitsResponseSchema = import_zod2.z.object({
|
|
1298
|
+
userDailyPlacements: import_zod2.z.object({
|
|
1299
|
+
dayIndex: import_zod2.z.string(),
|
|
1300
|
+
buyPlacements: import_zod2.z.string(),
|
|
1301
|
+
sellPlacements: import_zod2.z.string()
|
|
1302
|
+
}).nullish(),
|
|
1303
|
+
orderPlacementLimitConfig: import_zod2.z.object({
|
|
1304
|
+
dailyBuyOrderPlacementLimit: import_zod2.z.string(),
|
|
1305
|
+
buyLimitConfigured: import_zod2.z.boolean(),
|
|
1306
|
+
dailySellOrderPlacementLimit: import_zod2.z.string(),
|
|
1307
|
+
sellLimitConfigured: import_zod2.z.boolean()
|
|
1308
|
+
}).nullish()
|
|
1309
|
+
});
|
|
1294
1310
|
|
|
1295
1311
|
// src/orders/actions/approve-usdc.ts
|
|
1296
1312
|
function createApproveUsdcAction(input) {
|
|
@@ -4681,6 +4697,8 @@ var contractErrorMessages = {
|
|
|
4681
4697
|
CASHBACK_TRANSFER_FAILED: "Cashback transfer failed",
|
|
4682
4698
|
// Order limits
|
|
4683
4699
|
DAILY_BUY_ORDER_LIMIT_EXCEEDED: "Daily buy order count limit exceeded",
|
|
4700
|
+
DAILY_BUY_ORDER_PLACEMENT_LIMIT_EXCEEDED: "You've reached today's buy order limit. Cancelled orders still count towards it \u2014 try again tomorrow.",
|
|
4701
|
+
DAILY_SELL_ORDER_PLACEMENT_LIMIT_EXCEEDED: "You've reached today's sell and pay order limit. Cancelled orders still count towards it \u2014 try again tomorrow.",
|
|
4684
4702
|
MONTHLY_BUY_ORDER_LIMIT_EXCEEDED: "Monthly buy order count limit exceeded",
|
|
4685
4703
|
SELL_ORDER_AMOUNT_LIMIT_EXCEEDED: "Sell order amount limit exceeded",
|
|
4686
4704
|
BUY_ORDER_AMOUNT_EXCEEDS_LIMIT: "Buy order amount exceeds limit",
|
|
@@ -4899,6 +4917,10 @@ var contractErrors = {
|
|
|
4899
4917
|
// Order limits
|
|
4900
4918
|
DailyBuyOrderLimitExceeded: "DAILY_BUY_ORDER_LIMIT_EXCEEDED",
|
|
4901
4919
|
MonthlyBuyOrderLimitExceeded: "MONTHLY_BUY_ORDER_LIMIT_EXCEEDED",
|
|
4920
|
+
// Gross placement caps: counted when the order is placed and never given
|
|
4921
|
+
// back when it is cancelled, unlike the volume limits above.
|
|
4922
|
+
DailyBuyOrderPlacementLimitExceeded: "DAILY_BUY_ORDER_PLACEMENT_LIMIT_EXCEEDED",
|
|
4923
|
+
DailySellOrderPlacementLimitExceeded: "DAILY_SELL_ORDER_PLACEMENT_LIMIT_EXCEEDED",
|
|
4902
4924
|
SellOrderAmountLimitExceeded: "SELL_ORDER_AMOUNT_LIMIT_EXCEEDED",
|
|
4903
4925
|
BuyOrderAmountExceedsLimit: "BUY_ORDER_AMOUNT_EXCEEDS_LIMIT",
|
|
4904
4926
|
SellOrderAmountExceedsLimit: "SELL_ORDER_AMOUNT_EXCEEDS_LIMIT",
|
|
@@ -5110,6 +5132,8 @@ var hexContractErrors = {
|
|
|
5110
5132
|
// Order limits
|
|
5111
5133
|
"0xe595a7bf": contractErrors.DailyBuyOrderLimitExceeded,
|
|
5112
5134
|
"0x675dbc86": contractErrors.MonthlyBuyOrderLimitExceeded,
|
|
5135
|
+
"0x917c7aef": contractErrors.DailyBuyOrderPlacementLimitExceeded,
|
|
5136
|
+
"0x4688ce73": contractErrors.DailySellOrderPlacementLimitExceeded,
|
|
5113
5137
|
"0x64301cb8": contractErrors.SellOrderAmountLimitExceeded,
|
|
5114
5138
|
"0x91da284f": contractErrors.BuyOrderAmountExceedsLimit,
|
|
5115
5139
|
"0xb407b9ec": contractErrors.SellOrderAmountExceedsLimit,
|
|
@@ -5902,6 +5926,7 @@ function normalizeSubgraphOrder(raw) {
|
|
|
5902
5926
|
|
|
5903
5927
|
// src/orders/subgraph/index.ts
|
|
5904
5928
|
var import_neverthrow15 = require("neverthrow");
|
|
5929
|
+
var import_viem19 = require("viem");
|
|
5905
5930
|
|
|
5906
5931
|
// src/orders/subgraph/queries.ts
|
|
5907
5932
|
var ORDERS_BY_USER_QUERY = (
|
|
@@ -5938,8 +5963,35 @@ var ORDERS_BY_USER_QUERY = (
|
|
|
5938
5963
|
}
|
|
5939
5964
|
`
|
|
5940
5965
|
);
|
|
5966
|
+
var PLACEMENT_LIMITS_QUERY = (
|
|
5967
|
+
/* GraphQL */
|
|
5968
|
+
`
|
|
5969
|
+
query PlacementLimits($placementsId: ID!, $configId: ID!) {
|
|
5970
|
+
userDailyPlacements(id: $placementsId) {
|
|
5971
|
+
dayIndex
|
|
5972
|
+
buyPlacements
|
|
5973
|
+
sellPlacements
|
|
5974
|
+
}
|
|
5975
|
+
orderPlacementLimitConfig(id: $configId) {
|
|
5976
|
+
dailyBuyOrderPlacementLimit
|
|
5977
|
+
buyLimitConfigured
|
|
5978
|
+
dailySellOrderPlacementLimit
|
|
5979
|
+
sellLimitConfigured
|
|
5980
|
+
}
|
|
5981
|
+
}
|
|
5982
|
+
`
|
|
5983
|
+
);
|
|
5941
5984
|
|
|
5942
5985
|
// src/orders/subgraph/index.ts
|
|
5986
|
+
var SECONDS_PER_DAY = 86400;
|
|
5987
|
+
var PLACEMENT_LIMIT_CONFIG_ID = (0, import_viem19.stringToHex)("placement-limits");
|
|
5988
|
+
function bucket(used, limit, configured, zeroMeansUnlimited) {
|
|
5989
|
+
if (!configured) return { used, limit: null, remaining: null, state: "unknown" };
|
|
5990
|
+
if (limit === 0 && zeroMeansUnlimited) {
|
|
5991
|
+
return { used, limit: null, remaining: null, state: "unlimited" };
|
|
5992
|
+
}
|
|
5993
|
+
return { used, limit, remaining: Math.max(0, limit - used), state: "enforced" };
|
|
5994
|
+
}
|
|
5943
5995
|
function getOrdersForUser(subgraphUrl, userAddress, skip, limit, logger = noopLogger) {
|
|
5944
5996
|
const user = userAddress.toLowerCase();
|
|
5945
5997
|
logger.debug("fetching orders from subgraph", { subgraphUrl, user, skip, limit });
|
|
@@ -5966,6 +6018,54 @@ function getOrdersForUser(subgraphUrl, userAddress, skip, limit, logger = noopLo
|
|
|
5966
6018
|
)
|
|
5967
6019
|
);
|
|
5968
6020
|
}
|
|
6021
|
+
function getPlacementLimitsForUser(subgraphUrl, userAddress, nowSeconds, logger = noopLogger) {
|
|
6022
|
+
const user = userAddress.toLowerCase();
|
|
6023
|
+
const dayIndex = Math.floor(nowSeconds / SECONDS_PER_DAY);
|
|
6024
|
+
const placementsId = (0, import_viem19.stringToHex)(`${user}-${dayIndex}`);
|
|
6025
|
+
logger.debug("fetching placement limits from subgraph", { subgraphUrl, user, dayIndex });
|
|
6026
|
+
return querySubgraph(subgraphUrl, {
|
|
6027
|
+
query: PLACEMENT_LIMITS_QUERY,
|
|
6028
|
+
variables: { placementsId, configId: PLACEMENT_LIMIT_CONFIG_ID }
|
|
6029
|
+
}).mapErr(
|
|
6030
|
+
(e) => new OrdersError(e.message, {
|
|
6031
|
+
code: "SUBGRAPH_REQUEST_FAILED",
|
|
6032
|
+
cause: e.cause ?? e,
|
|
6033
|
+
context: { user, dayIndex, ...e.context ?? {} }
|
|
6034
|
+
})
|
|
6035
|
+
).andThen(
|
|
6036
|
+
(data) => validate(
|
|
6037
|
+
ZodSubgraphPlacementLimitsResponseSchema,
|
|
6038
|
+
data,
|
|
6039
|
+
(message, cause, d) => new OrdersError(message, {
|
|
6040
|
+
code: "SUBGRAPH_VALIDATION_FAILED",
|
|
6041
|
+
cause,
|
|
6042
|
+
context: { data: d }
|
|
6043
|
+
})
|
|
6044
|
+
)
|
|
6045
|
+
).map((validated) => {
|
|
6046
|
+
const placements = validated.userDailyPlacements;
|
|
6047
|
+
const config = validated.orderPlacementLimitConfig;
|
|
6048
|
+
const buyUsed = placements ? Number(placements.buyPlacements) : 0;
|
|
6049
|
+
const sellUsed = placements ? Number(placements.sellPlacements) : 0;
|
|
6050
|
+
return {
|
|
6051
|
+
dayIndex,
|
|
6052
|
+
resetsAt: (dayIndex + 1) * SECONDS_PER_DAY,
|
|
6053
|
+
// A zero BUY cap is a hard block on-chain, not "unlimited".
|
|
6054
|
+
buy: bucket(
|
|
6055
|
+
buyUsed,
|
|
6056
|
+
config ? Number(config.dailyBuyOrderPlacementLimit) : 0,
|
|
6057
|
+
config?.buyLimitConfigured ?? false,
|
|
6058
|
+
false
|
|
6059
|
+
),
|
|
6060
|
+
sellPay: bucket(
|
|
6061
|
+
sellUsed,
|
|
6062
|
+
config ? Number(config.dailySellOrderPlacementLimit) : 0,
|
|
6063
|
+
config?.sellLimitConfigured ?? false,
|
|
6064
|
+
true
|
|
6065
|
+
)
|
|
6066
|
+
};
|
|
6067
|
+
});
|
|
6068
|
+
}
|
|
5969
6069
|
|
|
5970
6070
|
// src/orders/watch-events.ts
|
|
5971
6071
|
var PLACED_CONFIG = {
|
|
@@ -6141,6 +6241,19 @@ function createOrders(config) {
|
|
|
6141
6241
|
({ userAddress, skip, limit }) => getOrdersForUser(subgraphUrl, userAddress, skip, limit, logger)
|
|
6142
6242
|
);
|
|
6143
6243
|
},
|
|
6244
|
+
getPlacementLimits(params) {
|
|
6245
|
+
return validate(
|
|
6246
|
+
ZodGetPlacementLimitsParamsSchema,
|
|
6247
|
+
params,
|
|
6248
|
+
(message, cause, d) => new OrdersError(message, {
|
|
6249
|
+
code: "INVALID_PLACEMENT_LIMITS_PARAMS",
|
|
6250
|
+
cause,
|
|
6251
|
+
context: { params: d }
|
|
6252
|
+
})
|
|
6253
|
+
).asyncAndThen(
|
|
6254
|
+
({ userAddress }) => getPlacementLimitsForUser(subgraphUrl, userAddress, Math.floor(Date.now() / 1e3), logger)
|
|
6255
|
+
);
|
|
6256
|
+
},
|
|
6144
6257
|
getFeeConfig(params) {
|
|
6145
6258
|
return validate(
|
|
6146
6259
|
ZodGetFeeConfigParamsSchema,
|