@p2pdotme/sdk 1.2.17 → 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.
Files changed (58) hide show
  1. package/README.md +2 -2
  2. package/dist/country.cjs +116 -49
  3. package/dist/country.cjs.map +1 -1
  4. package/dist/country.d.cts +15 -1
  5. package/dist/country.d.ts +15 -1
  6. package/dist/country.mjs +114 -49
  7. package/dist/country.mjs.map +1 -1
  8. package/dist/fraud-engine.cjs +1 -0
  9. package/dist/fraud-engine.cjs.map +1 -1
  10. package/dist/fraud-engine.mjs +1 -0
  11. package/dist/fraud-engine.mjs.map +1 -1
  12. package/dist/index.cjs +2 -1
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +1 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.mjs +2 -1
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/orders.cjs +114 -0
  19. package/dist/orders.cjs.map +1 -1
  20. package/dist/orders.d.cts +53 -2
  21. package/dist/orders.d.ts +53 -2
  22. package/dist/orders.mjs +114 -0
  23. package/dist/orders.mjs.map +1 -1
  24. package/dist/prices.cjs +7 -0
  25. package/dist/prices.cjs.map +1 -1
  26. package/dist/prices.d.cts +1 -0
  27. package/dist/prices.d.ts +1 -0
  28. package/dist/prices.mjs +7 -0
  29. package/dist/prices.mjs.map +1 -1
  30. package/dist/profile.cjs +7 -0
  31. package/dist/profile.cjs.map +1 -1
  32. package/dist/profile.d.cts +2 -0
  33. package/dist/profile.d.ts +2 -0
  34. package/dist/profile.mjs +7 -0
  35. package/dist/profile.mjs.map +1 -1
  36. package/dist/qr-parsers.cjs +133 -52
  37. package/dist/qr-parsers.cjs.map +1 -1
  38. package/dist/qr-parsers.d.cts +1 -0
  39. package/dist/qr-parsers.d.ts +1 -0
  40. package/dist/qr-parsers.mjs +133 -52
  41. package/dist/qr-parsers.mjs.map +1 -1
  42. package/dist/react.cjs +194 -22
  43. package/dist/react.cjs.map +1 -1
  44. package/dist/react.d.cts +78 -2
  45. package/dist/react.d.ts +78 -2
  46. package/dist/react.mjs +180 -9
  47. package/dist/react.mjs.map +1 -1
  48. package/dist/stake.cjs +1 -0
  49. package/dist/stake.cjs.map +1 -1
  50. package/dist/stake.d.cts +1 -0
  51. package/dist/stake.d.ts +1 -0
  52. package/dist/stake.mjs +1 -0
  53. package/dist/stake.mjs.map +1 -1
  54. package/dist/zkkyc.cjs +1 -0
  55. package/dist/zkkyc.cjs.map +1 -1
  56. package/dist/zkkyc.mjs +1 -0
  57. package/dist/zkkyc.mjs.map +1 -1
  58. package/package.json +1 -1
package/dist/orders.cjs CHANGED
@@ -1056,6 +1056,7 @@ var CURRENCY = {
1056
1056
  ARS: "ARS",
1057
1057
  MEX: "MEX",
1058
1058
  VEN: "VEN",
1059
+ BOB: "BOB",
1059
1060
  EUR: "EUR",
1060
1061
  NGN: "NGN",
1061
1062
  USD: "USD",
@@ -1230,6 +1231,9 @@ var ZodGetOrderParamsSchema = import_zod2.z.object({
1230
1231
  var ZodGetFeeConfigParamsSchema = import_zod2.z.object({
1231
1232
  currency: ZodCurrencySchema
1232
1233
  });
1234
+ var ZodGetPlacementLimitsParamsSchema = import_zod2.z.object({
1235
+ userAddress: ZodAddressSchema
1236
+ });
1233
1237
  var ZodGetOrdersParamsSchema = import_zod2.z.object({
1234
1238
  userAddress: ZodAddressSchema,
1235
1239
  skip: import_zod2.z.number().int().min(0).default(0),
@@ -1290,6 +1294,19 @@ var ZodSubgraphOrderSchema = import_zod2.z.object({
1290
1294
  var ZodSubgraphOrdersResponseSchema = import_zod2.z.object({
1291
1295
  orders_collection: import_zod2.z.array(ZodSubgraphOrderSchema)
1292
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
+ });
1293
1310
 
1294
1311
  // src/orders/actions/approve-usdc.ts
1295
1312
  function createApproveUsdcAction(input) {
@@ -4680,6 +4697,8 @@ var contractErrorMessages = {
4680
4697
  CASHBACK_TRANSFER_FAILED: "Cashback transfer failed",
4681
4698
  // Order limits
4682
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.",
4683
4702
  MONTHLY_BUY_ORDER_LIMIT_EXCEEDED: "Monthly buy order count limit exceeded",
4684
4703
  SELL_ORDER_AMOUNT_LIMIT_EXCEEDED: "Sell order amount limit exceeded",
4685
4704
  BUY_ORDER_AMOUNT_EXCEEDS_LIMIT: "Buy order amount exceeds limit",
@@ -4898,6 +4917,10 @@ var contractErrors = {
4898
4917
  // Order limits
4899
4918
  DailyBuyOrderLimitExceeded: "DAILY_BUY_ORDER_LIMIT_EXCEEDED",
4900
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",
4901
4924
  SellOrderAmountLimitExceeded: "SELL_ORDER_AMOUNT_LIMIT_EXCEEDED",
4902
4925
  BuyOrderAmountExceedsLimit: "BUY_ORDER_AMOUNT_EXCEEDS_LIMIT",
4903
4926
  SellOrderAmountExceedsLimit: "SELL_ORDER_AMOUNT_EXCEEDS_LIMIT",
@@ -5109,6 +5132,8 @@ var hexContractErrors = {
5109
5132
  // Order limits
5110
5133
  "0xe595a7bf": contractErrors.DailyBuyOrderLimitExceeded,
5111
5134
  "0x675dbc86": contractErrors.MonthlyBuyOrderLimitExceeded,
5135
+ "0x917c7aef": contractErrors.DailyBuyOrderPlacementLimitExceeded,
5136
+ "0x4688ce73": contractErrors.DailySellOrderPlacementLimitExceeded,
5112
5137
  "0x64301cb8": contractErrors.SellOrderAmountLimitExceeded,
5113
5138
  "0x91da284f": contractErrors.BuyOrderAmountExceedsLimit,
5114
5139
  "0xb407b9ec": contractErrors.SellOrderAmountExceedsLimit,
@@ -5901,6 +5926,7 @@ function normalizeSubgraphOrder(raw) {
5901
5926
 
5902
5927
  // src/orders/subgraph/index.ts
5903
5928
  var import_neverthrow15 = require("neverthrow");
5929
+ var import_viem19 = require("viem");
5904
5930
 
5905
5931
  // src/orders/subgraph/queries.ts
5906
5932
  var ORDERS_BY_USER_QUERY = (
@@ -5937,8 +5963,35 @@ var ORDERS_BY_USER_QUERY = (
5937
5963
  }
5938
5964
  `
5939
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
+ );
5940
5984
 
5941
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
+ }
5942
5995
  function getOrdersForUser(subgraphUrl, userAddress, skip, limit, logger = noopLogger) {
5943
5996
  const user = userAddress.toLowerCase();
5944
5997
  logger.debug("fetching orders from subgraph", { subgraphUrl, user, skip, limit });
@@ -5965,6 +6018,54 @@ function getOrdersForUser(subgraphUrl, userAddress, skip, limit, logger = noopLo
5965
6018
  )
5966
6019
  );
5967
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
+ }
5968
6069
 
5969
6070
  // src/orders/watch-events.ts
5970
6071
  var PLACED_CONFIG = {
@@ -6140,6 +6241,19 @@ function createOrders(config) {
6140
6241
  ({ userAddress, skip, limit }) => getOrdersForUser(subgraphUrl, userAddress, skip, limit, logger)
6141
6242
  );
6142
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
+ },
6143
6257
  getFeeConfig(params) {
6144
6258
  return validate(
6145
6259
  ZodGetFeeConfigParamsSchema,