thirdweb 5.106.1 → 5.107.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.
Files changed (45) hide show
  1. package/dist/cjs/exports/x402.js +8 -0
  2. package/dist/cjs/exports/x402.js.map +1 -0
  3. package/dist/cjs/react/web/ui/Bridge/BuyWidget.js +1 -1
  4. package/dist/cjs/react/web/ui/Bridge/CheckoutWidget.js +1 -1
  5. package/dist/cjs/react/web/ui/Bridge/TransactionWidget.js +1 -1
  6. package/dist/cjs/react/web/ui/Bridge/swap-widget/SwapWidget.js +1 -0
  7. package/dist/cjs/react/web/ui/Bridge/swap-widget/SwapWidget.js.map +1 -1
  8. package/dist/cjs/version.js +1 -1
  9. package/dist/cjs/x402/facilitator.js +76 -0
  10. package/dist/cjs/x402/facilitator.js.map +1 -0
  11. package/dist/cjs/x402/fetchWithPayment.js +121 -0
  12. package/dist/cjs/x402/fetchWithPayment.js.map +1 -0
  13. package/dist/esm/exports/x402.js +3 -0
  14. package/dist/esm/exports/x402.js.map +1 -0
  15. package/dist/esm/react/web/ui/Bridge/BuyWidget.js +1 -1
  16. package/dist/esm/react/web/ui/Bridge/CheckoutWidget.js +1 -1
  17. package/dist/esm/react/web/ui/Bridge/TransactionWidget.js +1 -1
  18. package/dist/esm/react/web/ui/Bridge/swap-widget/SwapWidget.js +1 -0
  19. package/dist/esm/react/web/ui/Bridge/swap-widget/SwapWidget.js.map +1 -1
  20. package/dist/esm/version.js +1 -1
  21. package/dist/esm/x402/facilitator.js +73 -0
  22. package/dist/esm/x402/facilitator.js.map +1 -0
  23. package/dist/esm/x402/fetchWithPayment.js +118 -0
  24. package/dist/esm/x402/fetchWithPayment.js.map +1 -0
  25. package/dist/types/exports/x402.d.ts +3 -0
  26. package/dist/types/exports/x402.d.ts.map +1 -0
  27. package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts +1 -1
  28. package/dist/types/react/web/ui/Bridge/CheckoutWidget.d.ts +1 -1
  29. package/dist/types/react/web/ui/Bridge/TransactionWidget.d.ts +1 -1
  30. package/dist/types/react/web/ui/Bridge/swap-widget/SwapWidget.d.ts +1 -0
  31. package/dist/types/react/web/ui/Bridge/swap-widget/SwapWidget.d.ts.map +1 -1
  32. package/dist/types/version.d.ts +1 -1
  33. package/dist/types/x402/facilitator.d.ts +48 -0
  34. package/dist/types/x402/facilitator.d.ts.map +1 -0
  35. package/dist/types/x402/fetchWithPayment.d.ts +43 -0
  36. package/dist/types/x402/fetchWithPayment.d.ts.map +1 -0
  37. package/package.json +12 -3
  38. package/src/exports/x402.ts +5 -0
  39. package/src/react/web/ui/Bridge/BuyWidget.tsx +1 -1
  40. package/src/react/web/ui/Bridge/CheckoutWidget.tsx +1 -1
  41. package/src/react/web/ui/Bridge/TransactionWidget.tsx +1 -1
  42. package/src/react/web/ui/Bridge/swap-widget/SwapWidget.tsx +1 -0
  43. package/src/version.ts +1 -1
  44. package/src/x402/facilitator.ts +87 -0
  45. package/src/x402/fetchWithPayment.ts +173 -0
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapFetchWithPayment = exports.facilitator = void 0;
4
+ var facilitator_js_1 = require("../x402/facilitator.js");
5
+ Object.defineProperty(exports, "facilitator", { enumerable: true, get: function () { return facilitator_js_1.facilitator; } });
6
+ var fetchWithPayment_js_1 = require("../x402/fetchWithPayment.js");
7
+ Object.defineProperty(exports, "wrapFetchWithPayment", { enumerable: true, get: function () { return fetchWithPayment_js_1.wrapFetchWithPayment; } });
8
+ //# sourceMappingURL=x402.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/exports/x402.ts"],"names":[],"mappings":";;;AAAA,yDAGgC;AAF9B,6GAAA,WAAW,OAAA;AAGb,mEAAmE;AAA1D,2HAAA,oBAAoB,OAAA"}
@@ -124,7 +124,7 @@ const UnsupportedTokenScreen_js_1 = require("./UnsupportedTokenScreen.js");
124
124
  *
125
125
  * Refer to the [`BuyWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/BuyWidgetConnectOptions) type for more details.
126
126
  *
127
- * @bridge Widgets
127
+ * @bridge
128
128
  */
129
129
  function BuyWidget(props) {
130
130
  const localeQuery = (0, getConnectLocale_js_1.useConnectLocale)(props.locale || "en_US");
@@ -119,7 +119,7 @@ const UnsupportedTokenScreen_js_1 = require("./UnsupportedTokenScreen.js");
119
119
  *
120
120
  * Refer to the [`CheckoutWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/CheckoutWidgetConnectOptions) type for more details.
121
121
  *
122
- * @bridge Widgets
122
+ * @bridge
123
123
  */
124
124
  function CheckoutWidget(props) {
125
125
  const localeQuery = (0, getConnectLocale_js_1.useConnectLocale)(props.locale || "en_US");
@@ -132,7 +132,7 @@ const UnsupportedTokenScreen_js_1 = require("./UnsupportedTokenScreen.js");
132
132
  *
133
133
  * Refer to the [`TransactionWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/TransactionWidgetConnectOptions) type for more details.
134
134
  *
135
- * @bridge Widgets
135
+ * @bridge
136
136
  */
137
137
  function TransactionWidget(props) {
138
138
  const localeQuery = (0, getConnectLocale_js_1.useConnectLocale)(props.locale || "en_US");
@@ -89,6 +89,7 @@ const use_bridge_chains_js_1 = require("./use-bridge-chains.js");
89
89
  * }} />
90
90
  * ```
91
91
  *
92
+ * @bridge
92
93
  */
93
94
  function SwapWidget(props) {
94
95
  return ((0, jsx_runtime_1.jsx)(SwapWidgetContainer, { theme: props.theme, style: props.style, className: props.className, children: (0, jsx_runtime_1.jsx)(SwapWidgetContent, { ...props }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"SwapWidget.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/swap-widget/SwapWidget.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AA6Ob,gCAUC;AAKD,kDAmBC;;AA7QD,iCAAyD;AAIzD,wEAA6E;AAE7E,gEAA6D;AAC7D,kGAA4F;AAI5F,yEAAsE;AACtE,+EAA2E;AAC3E,wEAAkE;AAClE,sDAAgD;AAChD,4EAAsE;AACtE,0EAAoE;AACpE,oDAA8C;AAC9C,yCAAiD;AACjD,6CAAoE;AACpE,6CAAsC;AAMtC,iEAAyD;AA0IzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,SAAgB,UAAU,CAAC,KAAsB;IAC/C,OAAO,CACL,uBAAC,mBAAmB,IAClB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,SAAS,EAAE,KAAK,CAAC,SAAS,YAE1B,uBAAC,iBAAiB,OAAK,KAAK,GAAI,GACZ,CACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,KAKnC;IACC,OAAO,CACL,uBAAC,4CAAmB,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,YAC/C,uBAAC,gCAAc,IACb,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,SAAS,EAAC,SAAS,EACnB,KAAK,EAAE;gBACL,GAAG,KAAK,CAAC,KAAK;aACf,YAED,uBAAC,gCAAa,cAAE,KAAK,CAAC,QAAQ,GAAiB,GAChC,GACG,CACvB,CAAC;AACJ,CAAC;AA2BD,SAAS,iBAAiB,CAAC,KAAsB;IAC/C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAmB,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5E,MAAM,gBAAgB,GAAG,IAAA,8BAAmB,GAAE,CAAC;IAC/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,sBAAsB,KAAK,KAAK,CAAC;IAEhE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAGnD,GAAG,EAAE;QACN,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YACpC,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM;aACtC,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YACrC,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM;aACvC,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAA6B,GAAG,EAAE;QACxE,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC5B,OAAO;gBACL,YAAY,EACV,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY;oBACnC,IAAA,uBAAU,EAAC,mCAAoB,CAAC;gBAClC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO;aACxC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAA,8BAAiB,GAAE,EAAE,QAAQ,CAAC;QAEvD,4DAA4D;QAC5D,MAAM,SAAS,GAAG,mBAAmB,CACnC,KAAK,CAAC,OAAO,EACb,IAAA,8BAAiB,GAAE,EAAE,SAAS,CAC/B,CAAC;QAEF,+DAA+D;QAC/D,IACE,gBAAgB;YAChB,SAAS;YACT,gBAAgB,CAAC,YAAY,CAAC,WAAW,EAAE;gBACzC,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE;YACtC,gBAAgB,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,EAC9C,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAA6B,GAAG,EAAE;QAC1E,OAAO,mBAAmB,CACxB,KAAK,CAAC,OAAO,EACb,gBAAgB,CAAC,CAAC,CAAC,IAAA,8BAAiB,GAAE,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAC9D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAA,8BAAiB,EAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE5C,mBAAmB;IACnB,IAAA,sCAAe,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE9B,MAAM,WAAW,GAAG,IAAA,mBAAW,EAC7B,CAAC,KAAY,EAAE,KAAwB,EAAE,EAAE;QACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9B,SAAS,CAAC;YACR,EAAE,EAAE,OAAO;YACX,aAAa,EAAE,KAAK;YACpB,KAAK;SACN,CAAC,CAAC;IACL,CAAC,EACD,CAAC,KAAK,CAAC,OAAO,CAAC,CAChB,CAAC;IAEF,gDAAgD;IAChD,IAAI,MAAM,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACnD,OAAO,CACL,uBAAC,mBAAM,IACL,oBAAoB,EAClB,KAAK,CAAC,oBAAoB,KAAK,SAAS;gBACtC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC,oBAAoB,EAEhC,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,EAC5B,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,EACjC,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,SAAS,CAAC;oBACR,EAAE,EAAE,WAAW;oBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;oBACvC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,aAAa,EAAE,IAAI,CAAC,MAAM;oBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,KAAK,EAAE,IAAI,CAAC,MAAM;iBACnB,CAAC,CAAC;YACL,CAAC,GACD,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,CACL,uBAAC,kCAAc,IACb,KAAK,EAAC,aAAa,EACnB,kBAAkB,EAAC,MAAM,EACzB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,MAAM,EAAE,GAAG,EAAE;gBACX,SAAS,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YACjC,CAAC,EACD,SAAS,EAAE,GAAG,EAAE;gBACd,SAAS,CAAC;oBACR,GAAG,MAAM;oBACT,EAAE,EAAE,WAAW;iBAChB,CAAC,CAAC;YACL,CAAC,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,EAC5D,aAAa,EAAE;gBACb,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gBAAgB,CAAC,YAAY;gBAC1C,OAAO,EAAE,MAAM,CAAC,gBAAgB;gBAChC,WAAW,EAAE,MAAM,CAAC,SAAS;gBAC7B,MAAM,EAAE,MAAM,CAAC,IAAI;aACpB,EACD,aAAa,EAAE,MAAM,CAAC,aAAa,EACnC,SAAS,EAAE;gBACT,gBAAgB,EAAE,MAAM,CAAC,QAAQ;gBACjC,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,GACD,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,CACL,uBAAC,0BAAU,IACT,KAAK,EAAC,iBAAiB,EACvB,SAAS,EAAE,IAAI,EACf,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,MAAM,EAAE,GAAG,EAAE;gBACX,SAAS,CAAC;oBACR,GAAG,MAAM;oBACT,EAAE,EAAE,WAAW;oBACf,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;iBAC1C,CAAC,CAAC;YACL,CAAC,EACD,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EACtD,UAAU,EAAE,CAAC,iBAAiB,EAAE,EAAE;gBAChC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACxC,SAAS,CAAC;oBACR,GAAG,MAAM;oBACT,EAAE,EAAE,WAAW;oBACf,iBAAiB;iBAClB,CAAC,CAAC;YACL,CAAC,EACD,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,MAAM,EAAE,gBAAgB,CAAC,YAAY,EACrC,aAAa,EAAE,mCAAgB,GAC/B,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,CACL,uBAAC,gCAAa,IACZ,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAC3C,MAAM,EAAE,GAAG,EAAE;gBACX,SAAS,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC/B,gBAAgB;gBAChB,kBAAkB,CAAC;oBACjB,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC;YACL,CAAC,EACD,aAAa,EAAE,MAAM,CAAC,aAAa,EACnC,SAAS,EAAE;gBACT,gBAAgB,EAAE,MAAM,CAAC,QAAQ;gBACjC,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,EACD,aAAa,EAAE,mCAAgB,EAC/B,YAAY,EAAE,KAAK,GACnB,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,CACL,uBAAC,4BAAW,IACV,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,GAAG,EAAE;gBACb,SAAS,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC/B,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;gBACZ,SAAS,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YACjC,CAAC,GACD,CACH,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAmC,EACnC,iBAA6C;IAE7C,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,OAAO;YACL,YAAY,EACV,OAAO,CAAC,SAAS,CAAC,YAAY,IAAI,IAAA,uBAAU,EAAC,mCAAoB,CAAC;YACpE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO;SACnC,CAAC;IACJ,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"SwapWidget.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/swap-widget/SwapWidget.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = "5.106.1";
4
+ exports.version = "5.107.0";
5
5
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.facilitator = facilitator;
4
+ const DEFAULT_BASE_URL = "https://api.thirdweb.com/v1/payments/x402";
5
+ /**
6
+ * Creates a facilitator for the x402 payment protocol.
7
+ * Use this with any x402 middleware to enable settling transactions with your thirdweb server wallet.
8
+ *
9
+ * @param config - The configuration for the facilitator
10
+ * @returns a x402 compatible FacilitatorConfig
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { facilitator } from "thirdweb/x402";
15
+ * import { createThirdwebClient } from "thirdweb";
16
+ *
17
+ * const client = createThirdwebClient({
18
+ * secretKey: "your-secret-key",
19
+ * });
20
+ * const thirdwebX402Facilitator = facilitator({
21
+ * client: client,
22
+ * serverWalletAddress: "0x1234567890123456789012345678901234567890",
23
+ * });
24
+ *
25
+ * // add the facilitator to any x402 payment middleware
26
+ * const middleware = paymentMiddleware(
27
+ * "0x1234567890123456789012345678901234567890",
28
+ * {
29
+ * "/api/paywall": {
30
+ * price: "$0.01",
31
+ * network: "base-sepolia",
32
+ * config: {
33
+ * description: "Access to paid content",
34
+ * },
35
+ * },
36
+ * },
37
+ * thirdwebX402Facilitator,
38
+ * );
39
+ * ```
40
+ *
41
+ * @bridge x402
42
+ */
43
+ function facilitator(config) {
44
+ const secretKey = config.client.secretKey;
45
+ if (!secretKey) {
46
+ throw new Error("Client secret key is required for the x402 facilitator");
47
+ }
48
+ const serverWalletAddress = config.serverWalletAddress;
49
+ if (!serverWalletAddress) {
50
+ throw new Error("Server wallet address is required for the x402 facilitator");
51
+ }
52
+ return {
53
+ url: (config.baseUrl ?? DEFAULT_BASE_URL),
54
+ createAuthHeaders: async () => {
55
+ return {
56
+ verify: {
57
+ "x-secret-key": secretKey,
58
+ },
59
+ settle: {
60
+ "x-secret-key": secretKey,
61
+ "x-settlement-wallet-address": serverWalletAddress,
62
+ ...(config.vaultAccessToken
63
+ ? { "x-vault-access-token": config.vaultAccessToken }
64
+ : {}),
65
+ },
66
+ supported: {
67
+ "x-secret-key": secretKey,
68
+ },
69
+ list: {
70
+ "x-secret-key": secretKey,
71
+ },
72
+ };
73
+ },
74
+ };
75
+ }
76
+ //# sourceMappingURL=facilitator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../../src/x402/facilitator.ts"],"names":[],"mappings":";;AAkDA,kCAoCC;AA5ED,MAAM,gBAAgB,GAAG,2CAA2C,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,SAAgB,WAAW,CACzB,MAAqC;IAErC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACvD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAA4B;QACpE,iBAAiB,EAAE,KAAK,IAAI,EAAE;YAC5B,OAAO;gBACL,MAAM,EAAE;oBACN,cAAc,EAAE,SAAS;iBAC1B;gBACD,MAAM,EAAE;oBACN,cAAc,EAAE,SAAS;oBACzB,6BAA6B,EAAE,mBAAmB;oBAClD,GAAG,CAAC,MAAM,CAAC,gBAAgB;wBACzB,CAAC,CAAC,EAAE,sBAAsB,EAAE,MAAM,CAAC,gBAAgB,EAAE;wBACrD,CAAC,CAAC,EAAE,CAAC;iBACR;gBACD,SAAS,EAAE;oBACT,cAAc,EAAE,SAAS;iBAC1B;gBACD,IAAI,EAAE;oBACJ,cAAc,EAAE,SAAS;iBAC1B;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapFetchWithPayment = wrapFetchWithPayment;
4
+ const client_1 = require("x402/client");
5
+ const types_1 = require("x402/types");
6
+ const viem_js_1 = require("../adapters/viem.js");
7
+ const utils_js_1 = require("../chains/utils.js");
8
+ /**
9
+ * Enables the payment of APIs using the x402 payment protocol.
10
+ *
11
+ * This function wraps the native fetch API to automatically handle 402 Payment Required responses
12
+ * by creating and sending a payment header. It will:
13
+ * 1. Make the initial request
14
+ * 2. If a 402 response is received, parse the payment requirements
15
+ * 3. Verify the payment amount is within the allowed maximum
16
+ * 4. Create a payment header using the provided wallet client
17
+ * 5. Retry the request with the payment header
18
+ *
19
+ * @param fetch - The fetch function to wrap (typically globalThis.fetch)
20
+ * @param client - The thirdweb client used to access RPC infrastructure
21
+ * @param wallet - The wallet used to sign payment messages
22
+ * @param maxValue - The maximum allowed payment amount in base units (defaults to 1 USDC)
23
+ * @returns A wrapped fetch function that handles 402 responses automatically
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * import { wrapFetchWithPayment } from "thirdweb/x402";
28
+ * import { createThirdwebClient } from "thirdweb";
29
+ * import { createWallet } from "thirdweb/wallets";
30
+ *
31
+ * const client = createThirdwebClient({ clientId: "your-client-id" });
32
+ * const wallet = createWallet("io.metamask");
33
+ * await wallet.connect({ client })
34
+ *
35
+ * const fetchWithPay = wrapFetchWithPayment(fetch, client, wallet);
36
+ *
37
+ * // Make a request that may require payment
38
+ * const response = await fetchWithPay('https://api.example.com/paid-endpoint');
39
+ * ```
40
+ *
41
+ * @throws {Error} If the payment amount exceeds the maximum allowed value
42
+ * @throws {Error} If a payment has already been attempted for this request
43
+ * @throws {Error} If there's an error creating the payment header
44
+ *
45
+ * @bridge x402
46
+ */
47
+ function wrapFetchWithPayment(fetch, client, wallet, maxValue = BigInt(1 * 10 ** 6)) {
48
+ return async (input, init) => {
49
+ const response = await fetch(input, init);
50
+ if (response.status !== 402) {
51
+ return response;
52
+ }
53
+ const { x402Version, accepts } = (await response.json());
54
+ const parsedPaymentRequirements = accepts
55
+ .map((x) => types_1.PaymentRequirementsSchema.parse(x))
56
+ .filter((x) => x.scheme === "exact"); // TODO (402): accept other schemes
57
+ const account = wallet.getAccount();
58
+ let chain = wallet.getChain();
59
+ if (!account || !chain) {
60
+ throw new Error("Wallet not connected. Please connect your wallet to continue.");
61
+ }
62
+ const selectedPaymentRequirements = defaultPaymentRequirementsSelector(parsedPaymentRequirements, chain.id, "exact");
63
+ if (BigInt(selectedPaymentRequirements.maxAmountRequired) > maxValue) {
64
+ throw new Error("Payment amount exceeds maximum allowed");
65
+ }
66
+ const paymentChainId = types_1.EvmNetworkToChainId.get(selectedPaymentRequirements.network);
67
+ if (!paymentChainId) {
68
+ throw new Error(`No chain found for the selected payment requirement: ${selectedPaymentRequirements.network}`);
69
+ }
70
+ // switch to the payment chain if it's not the current chain
71
+ if (paymentChainId !== chain.id) {
72
+ await wallet.switchChain((0, utils_js_1.getCachedChain)(paymentChainId));
73
+ chain = wallet.getChain();
74
+ if (!chain) {
75
+ throw new Error(`Failed to switch chain (${paymentChainId})`);
76
+ }
77
+ }
78
+ const walletClient = viem_js_1.viemAdapter.wallet.toViem({
79
+ wallet: wallet,
80
+ chain,
81
+ client,
82
+ });
83
+ const paymentHeader = await (0, client_1.createPaymentHeader)(walletClient, x402Version, selectedPaymentRequirements);
84
+ const initParams = init || {};
85
+ if (initParams.__is402Retry) {
86
+ throw new Error("Payment already attempted");
87
+ }
88
+ const newInit = {
89
+ ...initParams,
90
+ headers: {
91
+ ...(initParams.headers || {}),
92
+ "X-PAYMENT": paymentHeader,
93
+ "Access-Control-Expose-Headers": "X-PAYMENT-RESPONSE",
94
+ },
95
+ __is402Retry: true,
96
+ };
97
+ const secondResponse = await fetch(input, newInit);
98
+ return secondResponse;
99
+ };
100
+ }
101
+ function defaultPaymentRequirementsSelector(paymentRequirements, chainId, scheme) {
102
+ if (!paymentRequirements.length) {
103
+ throw new Error("No valid payment requirements found in server 402 response");
104
+ }
105
+ const currentWalletNetwork = types_1.ChainIdToNetwork[chainId];
106
+ // find the payment requirements matching the connected wallet chain
107
+ const matchingPaymentRequirements = paymentRequirements.find((x) => x.network === currentWalletNetwork && x.scheme === scheme);
108
+ if (matchingPaymentRequirements) {
109
+ return matchingPaymentRequirements;
110
+ }
111
+ else {
112
+ // if no matching payment requirements, use the first payment requirement
113
+ // and switch the wallet to that chain
114
+ const firstPaymentRequirement = paymentRequirements.find((x) => x.scheme === scheme);
115
+ if (!firstPaymentRequirement) {
116
+ throw new Error("No suitable payment requirements found");
117
+ }
118
+ return firstPaymentRequirement;
119
+ }
120
+ }
121
+ //# sourceMappingURL=fetchWithPayment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchWithPayment.js","sourceRoot":"","sources":["../../../src/x402/fetchWithPayment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { facilitator, } from "../x402/facilitator.js";
2
+ export { wrapFetchWithPayment } from "../x402/fetchWithPayment.js";
3
+ //# sourceMappingURL=x402.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/exports/x402.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -121,7 +121,7 @@ import { UnsupportedTokenScreen } from "./UnsupportedTokenScreen.js";
121
121
  *
122
122
  * Refer to the [`BuyWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/BuyWidgetConnectOptions) type for more details.
123
123
  *
124
- * @bridge Widgets
124
+ * @bridge
125
125
  */
126
126
  export function BuyWidget(props) {
127
127
  const localeQuery = useConnectLocale(props.locale || "en_US");
@@ -116,7 +116,7 @@ import { UnsupportedTokenScreen } from "./UnsupportedTokenScreen.js";
116
116
  *
117
117
  * Refer to the [`CheckoutWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/CheckoutWidgetConnectOptions) type for more details.
118
118
  *
119
- * @bridge Widgets
119
+ * @bridge
120
120
  */
121
121
  export function CheckoutWidget(props) {
122
122
  const localeQuery = useConnectLocale(props.locale || "en_US");
@@ -129,7 +129,7 @@ import { UnsupportedTokenScreen } from "./UnsupportedTokenScreen.js";
129
129
  *
130
130
  * Refer to the [`TransactionWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/TransactionWidgetConnectOptions) type for more details.
131
131
  *
132
- * @bridge Widgets
132
+ * @bridge
133
133
  */
134
134
  export function TransactionWidget(props) {
135
135
  const localeQuery = useConnectLocale(props.locale || "en_US");
@@ -85,6 +85,7 @@ import { useBridgeChains } from "./use-bridge-chains.js";
85
85
  * }} />
86
86
  * ```
87
87
  *
88
+ * @bridge
88
89
  */
89
90
  export function SwapWidget(props) {
90
91
  return (_jsx(SwapWidgetContainer, { theme: props.theme, style: props.style, className: props.className, children: _jsx(SwapWidgetContent, { ...props }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"SwapWidget.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/swap-widget/SwapWidget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SwapWidget.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/swap-widget/SwapWidget.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const version = "5.106.1";
1
+ export const version = "5.107.0";
2
2
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,73 @@
1
+ const DEFAULT_BASE_URL = "https://api.thirdweb.com/v1/payments/x402";
2
+ /**
3
+ * Creates a facilitator for the x402 payment protocol.
4
+ * Use this with any x402 middleware to enable settling transactions with your thirdweb server wallet.
5
+ *
6
+ * @param config - The configuration for the facilitator
7
+ * @returns a x402 compatible FacilitatorConfig
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { facilitator } from "thirdweb/x402";
12
+ * import { createThirdwebClient } from "thirdweb";
13
+ *
14
+ * const client = createThirdwebClient({
15
+ * secretKey: "your-secret-key",
16
+ * });
17
+ * const thirdwebX402Facilitator = facilitator({
18
+ * client: client,
19
+ * serverWalletAddress: "0x1234567890123456789012345678901234567890",
20
+ * });
21
+ *
22
+ * // add the facilitator to any x402 payment middleware
23
+ * const middleware = paymentMiddleware(
24
+ * "0x1234567890123456789012345678901234567890",
25
+ * {
26
+ * "/api/paywall": {
27
+ * price: "$0.01",
28
+ * network: "base-sepolia",
29
+ * config: {
30
+ * description: "Access to paid content",
31
+ * },
32
+ * },
33
+ * },
34
+ * thirdwebX402Facilitator,
35
+ * );
36
+ * ```
37
+ *
38
+ * @bridge x402
39
+ */
40
+ export function facilitator(config) {
41
+ const secretKey = config.client.secretKey;
42
+ if (!secretKey) {
43
+ throw new Error("Client secret key is required for the x402 facilitator");
44
+ }
45
+ const serverWalletAddress = config.serverWalletAddress;
46
+ if (!serverWalletAddress) {
47
+ throw new Error("Server wallet address is required for the x402 facilitator");
48
+ }
49
+ return {
50
+ url: (config.baseUrl ?? DEFAULT_BASE_URL),
51
+ createAuthHeaders: async () => {
52
+ return {
53
+ verify: {
54
+ "x-secret-key": secretKey,
55
+ },
56
+ settle: {
57
+ "x-secret-key": secretKey,
58
+ "x-settlement-wallet-address": serverWalletAddress,
59
+ ...(config.vaultAccessToken
60
+ ? { "x-vault-access-token": config.vaultAccessToken }
61
+ : {}),
62
+ },
63
+ supported: {
64
+ "x-secret-key": secretKey,
65
+ },
66
+ list: {
67
+ "x-secret-key": secretKey,
68
+ },
69
+ };
70
+ },
71
+ };
72
+ }
73
+ //# sourceMappingURL=facilitator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../../src/x402/facilitator.ts"],"names":[],"mappings":"AAUA,MAAM,gBAAgB,GAAG,2CAA2C,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,WAAW,CACzB,MAAqC;IAErC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACvD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAA4B;QACpE,iBAAiB,EAAE,KAAK,IAAI,EAAE;YAC5B,OAAO;gBACL,MAAM,EAAE;oBACN,cAAc,EAAE,SAAS;iBAC1B;gBACD,MAAM,EAAE;oBACN,cAAc,EAAE,SAAS;oBACzB,6BAA6B,EAAE,mBAAmB;oBAClD,GAAG,CAAC,MAAM,CAAC,gBAAgB;wBACzB,CAAC,CAAC,EAAE,sBAAsB,EAAE,MAAM,CAAC,gBAAgB,EAAE;wBACrD,CAAC,CAAC,EAAE,CAAC;iBACR;gBACD,SAAS,EAAE;oBACT,cAAc,EAAE,SAAS;iBAC1B;gBACD,IAAI,EAAE;oBACJ,cAAc,EAAE,SAAS;iBAC1B;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,118 @@
1
+ import { createPaymentHeader } from "x402/client";
2
+ import { ChainIdToNetwork, EvmNetworkToChainId, PaymentRequirementsSchema, } from "x402/types";
3
+ import { viemAdapter } from "../adapters/viem.js";
4
+ import { getCachedChain } from "../chains/utils.js";
5
+ /**
6
+ * Enables the payment of APIs using the x402 payment protocol.
7
+ *
8
+ * This function wraps the native fetch API to automatically handle 402 Payment Required responses
9
+ * by creating and sending a payment header. It will:
10
+ * 1. Make the initial request
11
+ * 2. If a 402 response is received, parse the payment requirements
12
+ * 3. Verify the payment amount is within the allowed maximum
13
+ * 4. Create a payment header using the provided wallet client
14
+ * 5. Retry the request with the payment header
15
+ *
16
+ * @param fetch - The fetch function to wrap (typically globalThis.fetch)
17
+ * @param client - The thirdweb client used to access RPC infrastructure
18
+ * @param wallet - The wallet used to sign payment messages
19
+ * @param maxValue - The maximum allowed payment amount in base units (defaults to 1 USDC)
20
+ * @returns A wrapped fetch function that handles 402 responses automatically
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * import { wrapFetchWithPayment } from "thirdweb/x402";
25
+ * import { createThirdwebClient } from "thirdweb";
26
+ * import { createWallet } from "thirdweb/wallets";
27
+ *
28
+ * const client = createThirdwebClient({ clientId: "your-client-id" });
29
+ * const wallet = createWallet("io.metamask");
30
+ * await wallet.connect({ client })
31
+ *
32
+ * const fetchWithPay = wrapFetchWithPayment(fetch, client, wallet);
33
+ *
34
+ * // Make a request that may require payment
35
+ * const response = await fetchWithPay('https://api.example.com/paid-endpoint');
36
+ * ```
37
+ *
38
+ * @throws {Error} If the payment amount exceeds the maximum allowed value
39
+ * @throws {Error} If a payment has already been attempted for this request
40
+ * @throws {Error} If there's an error creating the payment header
41
+ *
42
+ * @bridge x402
43
+ */
44
+ export function wrapFetchWithPayment(fetch, client, wallet, maxValue = BigInt(1 * 10 ** 6)) {
45
+ return async (input, init) => {
46
+ const response = await fetch(input, init);
47
+ if (response.status !== 402) {
48
+ return response;
49
+ }
50
+ const { x402Version, accepts } = (await response.json());
51
+ const parsedPaymentRequirements = accepts
52
+ .map((x) => PaymentRequirementsSchema.parse(x))
53
+ .filter((x) => x.scheme === "exact"); // TODO (402): accept other schemes
54
+ const account = wallet.getAccount();
55
+ let chain = wallet.getChain();
56
+ if (!account || !chain) {
57
+ throw new Error("Wallet not connected. Please connect your wallet to continue.");
58
+ }
59
+ const selectedPaymentRequirements = defaultPaymentRequirementsSelector(parsedPaymentRequirements, chain.id, "exact");
60
+ if (BigInt(selectedPaymentRequirements.maxAmountRequired) > maxValue) {
61
+ throw new Error("Payment amount exceeds maximum allowed");
62
+ }
63
+ const paymentChainId = EvmNetworkToChainId.get(selectedPaymentRequirements.network);
64
+ if (!paymentChainId) {
65
+ throw new Error(`No chain found for the selected payment requirement: ${selectedPaymentRequirements.network}`);
66
+ }
67
+ // switch to the payment chain if it's not the current chain
68
+ if (paymentChainId !== chain.id) {
69
+ await wallet.switchChain(getCachedChain(paymentChainId));
70
+ chain = wallet.getChain();
71
+ if (!chain) {
72
+ throw new Error(`Failed to switch chain (${paymentChainId})`);
73
+ }
74
+ }
75
+ const walletClient = viemAdapter.wallet.toViem({
76
+ wallet: wallet,
77
+ chain,
78
+ client,
79
+ });
80
+ const paymentHeader = await createPaymentHeader(walletClient, x402Version, selectedPaymentRequirements);
81
+ const initParams = init || {};
82
+ if (initParams.__is402Retry) {
83
+ throw new Error("Payment already attempted");
84
+ }
85
+ const newInit = {
86
+ ...initParams,
87
+ headers: {
88
+ ...(initParams.headers || {}),
89
+ "X-PAYMENT": paymentHeader,
90
+ "Access-Control-Expose-Headers": "X-PAYMENT-RESPONSE",
91
+ },
92
+ __is402Retry: true,
93
+ };
94
+ const secondResponse = await fetch(input, newInit);
95
+ return secondResponse;
96
+ };
97
+ }
98
+ function defaultPaymentRequirementsSelector(paymentRequirements, chainId, scheme) {
99
+ if (!paymentRequirements.length) {
100
+ throw new Error("No valid payment requirements found in server 402 response");
101
+ }
102
+ const currentWalletNetwork = ChainIdToNetwork[chainId];
103
+ // find the payment requirements matching the connected wallet chain
104
+ const matchingPaymentRequirements = paymentRequirements.find((x) => x.network === currentWalletNetwork && x.scheme === scheme);
105
+ if (matchingPaymentRequirements) {
106
+ return matchingPaymentRequirements;
107
+ }
108
+ else {
109
+ // if no matching payment requirements, use the first payment requirement
110
+ // and switch the wallet to that chain
111
+ const firstPaymentRequirement = paymentRequirements.find((x) => x.scheme === scheme);
112
+ if (!firstPaymentRequirement) {
113
+ throw new Error("No suitable payment requirements found");
114
+ }
115
+ return firstPaymentRequirement;
116
+ }
117
+ }
118
+ //# sourceMappingURL=fetchWithPayment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchWithPayment.js","sourceRoot":"","sources":["../../../src/x402/fetchWithPayment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { facilitator, type ThirdwebX402FacilitatorConfig, } from "../x402/facilitator.js";
2
+ export { wrapFetchWithPayment } from "../x402/fetchWithPayment.js";
3
+ //# sourceMappingURL=x402.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../../src/exports/x402.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,6BAA6B,GACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -264,7 +264,7 @@ export type BuyWidgetProps = {
264
264
  *
265
265
  * Refer to the [`BuyWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/BuyWidgetConnectOptions) type for more details.
266
266
  *
267
- * @bridge Widgets
267
+ * @bridge
268
268
  */
269
269
  export declare function BuyWidget(props: BuyWidgetProps): import("react/jsx-runtime").JSX.Element;
270
270
  /**
@@ -260,7 +260,7 @@ export type CheckoutWidgetProps = {
260
260
  *
261
261
  * Refer to the [`CheckoutWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/CheckoutWidgetConnectOptions) type for more details.
262
262
  *
263
- * @bridge Widgets
263
+ * @bridge
264
264
  */
265
265
  export declare function CheckoutWidget(props: CheckoutWidgetProps): import("react/jsx-runtime").JSX.Element;
266
266
  /**
@@ -265,7 +265,7 @@ export type TransactionWidgetProps = {
265
265
  *
266
266
  * Refer to the [`TransactionWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/TransactionWidgetConnectOptions) type for more details.
267
267
  *
268
- * @bridge Widgets
268
+ * @bridge
269
269
  */
270
270
  export declare function TransactionWidget(props: TransactionWidgetProps): import("react/jsx-runtime").JSX.Element;
271
271
  /**
@@ -206,6 +206,7 @@ export type SwapWidgetProps = {
206
206
  * }} />
207
207
  * ```
208
208
  *
209
+ * @bridge
209
210
  */
210
211
  export declare function SwapWidget(props: SwapWidgetProps): import("react/jsx-runtime").JSX.Element;
211
212
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SwapWidget.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/swap-widget/SwapWidget.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAGhF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yCAAyC,CAAC;AAarE,OAAO,KAAK,EACV,iBAAiB,EACjB,wBAAwB,EAEzB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;;;;;;;;;;OAcG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACH,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE;YACT,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,SAAS,CAAC,EAAE;YACV,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3D;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAUhD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAcA"}
1
+ {"version":3,"file":"SwapWidget.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/swap-widget/SwapWidget.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAGhF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yCAAyC,CAAC;AAarE,OAAO,KAAK,EACV,iBAAiB,EACjB,wBAAwB,EAEzB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;;;;;;;;;;OAcG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACH,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE;YACT,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,SAAS,CAAC,EAAE;YACV,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3D;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAUhD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAcA"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.106.1";
1
+ export declare const version = "5.107.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1,48 @@
1
+ import type { FacilitatorConfig } from "x402/types";
2
+ import type { ThirdwebClient } from "../client/client.js";
3
+ export type ThirdwebX402FacilitatorConfig = {
4
+ client: ThirdwebClient;
5
+ serverWalletAddress: string;
6
+ vaultAccessToken?: string;
7
+ baseUrl?: string;
8
+ };
9
+ /**
10
+ * Creates a facilitator for the x402 payment protocol.
11
+ * Use this with any x402 middleware to enable settling transactions with your thirdweb server wallet.
12
+ *
13
+ * @param config - The configuration for the facilitator
14
+ * @returns a x402 compatible FacilitatorConfig
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { facilitator } from "thirdweb/x402";
19
+ * import { createThirdwebClient } from "thirdweb";
20
+ *
21
+ * const client = createThirdwebClient({
22
+ * secretKey: "your-secret-key",
23
+ * });
24
+ * const thirdwebX402Facilitator = facilitator({
25
+ * client: client,
26
+ * serverWalletAddress: "0x1234567890123456789012345678901234567890",
27
+ * });
28
+ *
29
+ * // add the facilitator to any x402 payment middleware
30
+ * const middleware = paymentMiddleware(
31
+ * "0x1234567890123456789012345678901234567890",
32
+ * {
33
+ * "/api/paywall": {
34
+ * price: "$0.01",
35
+ * network: "base-sepolia",
36
+ * config: {
37
+ * description: "Access to paid content",
38
+ * },
39
+ * },
40
+ * },
41
+ * thirdwebX402Facilitator,
42
+ * );
43
+ * ```
44
+ *
45
+ * @bridge x402
46
+ */
47
+ export declare function facilitator(config: ThirdwebX402FacilitatorConfig): FacilitatorConfig;
48
+ //# sourceMappingURL=facilitator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facilitator.d.ts","sourceRoot":"","sources":["../../../src/x402/facilitator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,cAAc,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,6BAA6B,GACpC,iBAAiB,CAkCnB"}
@@ -0,0 +1,43 @@
1
+ import type { ThirdwebClient } from "../client/client.js";
2
+ import type { Wallet } from "../wallets/interfaces/wallet.js";
3
+ /**
4
+ * Enables the payment of APIs using the x402 payment protocol.
5
+ *
6
+ * This function wraps the native fetch API to automatically handle 402 Payment Required responses
7
+ * by creating and sending a payment header. It will:
8
+ * 1. Make the initial request
9
+ * 2. If a 402 response is received, parse the payment requirements
10
+ * 3. Verify the payment amount is within the allowed maximum
11
+ * 4. Create a payment header using the provided wallet client
12
+ * 5. Retry the request with the payment header
13
+ *
14
+ * @param fetch - The fetch function to wrap (typically globalThis.fetch)
15
+ * @param client - The thirdweb client used to access RPC infrastructure
16
+ * @param wallet - The wallet used to sign payment messages
17
+ * @param maxValue - The maximum allowed payment amount in base units (defaults to 1 USDC)
18
+ * @returns A wrapped fetch function that handles 402 responses automatically
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * import { wrapFetchWithPayment } from "thirdweb/x402";
23
+ * import { createThirdwebClient } from "thirdweb";
24
+ * import { createWallet } from "thirdweb/wallets";
25
+ *
26
+ * const client = createThirdwebClient({ clientId: "your-client-id" });
27
+ * const wallet = createWallet("io.metamask");
28
+ * await wallet.connect({ client })
29
+ *
30
+ * const fetchWithPay = wrapFetchWithPayment(fetch, client, wallet);
31
+ *
32
+ * // Make a request that may require payment
33
+ * const response = await fetchWithPay('https://api.example.com/paid-endpoint');
34
+ * ```
35
+ *
36
+ * @throws {Error} If the payment amount exceeds the maximum allowed value
37
+ * @throws {Error} If a payment has already been attempted for this request
38
+ * @throws {Error} If there's an error creating the payment header
39
+ *
40
+ * @bridge x402
41
+ */
42
+ export declare function wrapFetchWithPayment(fetch: typeof globalThis.fetch, client: ThirdwebClient, wallet: Wallet, maxValue?: bigint): (input: RequestInfo, init?: RequestInit) => Promise<Response>;
43
+ //# sourceMappingURL=fetchWithPayment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchWithPayment.d.ts","sourceRoot":"","sources":["../../../src/x402/fetchWithPayment.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,EAC9B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAA4B,IAExB,OAAO,WAAW,EAAE,OAAO,WAAW,uBAmFrD"}
package/package.json CHANGED
@@ -38,9 +38,10 @@
38
38
  "toml": "3.0.0",
39
39
  "uqr": "0.1.2",
40
40
  "viem": "2.33.2",
41
+ "x402": "0.6.1",
41
42
  "zod": "3.25.75",
42
- "@thirdweb-dev/engine": "3.2.1",
43
- "@thirdweb-dev/insight": "1.1.1"
43
+ "@thirdweb-dev/insight": "1.1.1",
44
+ "@thirdweb-dev/engine": "3.2.1"
44
45
  },
45
46
  "devDependencies": {
46
47
  "@aws-sdk/client-kms": "3.592.0",
@@ -226,6 +227,11 @@
226
227
  "react-native": "./dist/esm/exports/wallets/in-app.native.js",
227
228
  "import": "./dist/esm/exports/wallets/in-app.js",
228
229
  "default": "./dist/cjs/exports/wallets/in-app.js"
230
+ },
231
+ "./x402": {
232
+ "types": "./dist/types/exports/x402.d.ts",
233
+ "import": "./dist/esm/exports/x402.js",
234
+ "default": "./dist/cjs/exports/x402.js"
229
235
  }
230
236
  },
231
237
  "files": [
@@ -384,11 +390,14 @@
384
390
  ],
385
391
  "insight": [
386
392
  "./dist/types/exports/insight.d.ts"
393
+ ],
394
+ "x402": [
395
+ "./dist/types/exports/x402.d.ts"
387
396
  ]
388
397
  }
389
398
  },
390
399
  "typings": "./dist/types/exports/thirdweb.d.ts",
391
- "version": "5.106.1",
400
+ "version": "5.107.0",
392
401
  "scripts": {
393
402
  "bench": "vitest -c ./test/vitest.config.ts bench",
394
403
  "bench:compare": "bun run ./benchmarks/run.ts",
@@ -0,0 +1,5 @@
1
+ export {
2
+ facilitator,
3
+ type ThirdwebX402FacilitatorConfig,
4
+ } from "../x402/facilitator.js";
5
+ export { wrapFetchWithPayment } from "../x402/fetchWithPayment.js";
@@ -322,7 +322,7 @@ type UIOptionsResult =
322
322
  *
323
323
  * Refer to the [`BuyWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/BuyWidgetConnectOptions) type for more details.
324
324
  *
325
- * @bridge Widgets
325
+ * @bridge
326
326
  */
327
327
  export function BuyWidget(props: BuyWidgetProps) {
328
328
  const localeQuery = useConnectLocale(props.locale || "en_US");
@@ -318,7 +318,7 @@ type UIOptionsResult =
318
318
  *
319
319
  * Refer to the [`CheckoutWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/CheckoutWidgetConnectOptions) type for more details.
320
320
  *
321
- * @bridge Widgets
321
+ * @bridge
322
322
  */
323
323
  export function CheckoutWidget(props: CheckoutWidgetProps) {
324
324
  const localeQuery = useConnectLocale(props.locale || "en_US");
@@ -326,7 +326,7 @@ type UIOptionsResult =
326
326
  *
327
327
  * Refer to the [`TransactionWidgetConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/TransactionWidgetConnectOptions) type for more details.
328
328
  *
329
- * @bridge Widgets
329
+ * @bridge
330
330
  */
331
331
  export function TransactionWidget(props: TransactionWidgetProps) {
332
332
  const localeQuery = useConnectLocale(props.locale || "en_US");
@@ -234,6 +234,7 @@ export type SwapWidgetProps = {
234
234
  * }} />
235
235
  * ```
236
236
  *
237
+ * @bridge
237
238
  */
238
239
  export function SwapWidget(props: SwapWidgetProps) {
239
240
  return (
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.106.1";
1
+ export const version = "5.107.0";
@@ -0,0 +1,87 @@
1
+ import type { FacilitatorConfig } from "x402/types";
2
+ import type { ThirdwebClient } from "../client/client.js";
3
+
4
+ export type ThirdwebX402FacilitatorConfig = {
5
+ client: ThirdwebClient;
6
+ serverWalletAddress: string;
7
+ vaultAccessToken?: string;
8
+ baseUrl?: string;
9
+ };
10
+
11
+ const DEFAULT_BASE_URL = "https://api.thirdweb.com/v1/payments/x402";
12
+
13
+ /**
14
+ * Creates a facilitator for the x402 payment protocol.
15
+ * Use this with any x402 middleware to enable settling transactions with your thirdweb server wallet.
16
+ *
17
+ * @param config - The configuration for the facilitator
18
+ * @returns a x402 compatible FacilitatorConfig
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { facilitator } from "thirdweb/x402";
23
+ * import { createThirdwebClient } from "thirdweb";
24
+ *
25
+ * const client = createThirdwebClient({
26
+ * secretKey: "your-secret-key",
27
+ * });
28
+ * const thirdwebX402Facilitator = facilitator({
29
+ * client: client,
30
+ * serverWalletAddress: "0x1234567890123456789012345678901234567890",
31
+ * });
32
+ *
33
+ * // add the facilitator to any x402 payment middleware
34
+ * const middleware = paymentMiddleware(
35
+ * "0x1234567890123456789012345678901234567890",
36
+ * {
37
+ * "/api/paywall": {
38
+ * price: "$0.01",
39
+ * network: "base-sepolia",
40
+ * config: {
41
+ * description: "Access to paid content",
42
+ * },
43
+ * },
44
+ * },
45
+ * thirdwebX402Facilitator,
46
+ * );
47
+ * ```
48
+ *
49
+ * @bridge x402
50
+ */
51
+ export function facilitator(
52
+ config: ThirdwebX402FacilitatorConfig,
53
+ ): FacilitatorConfig {
54
+ const secretKey = config.client.secretKey;
55
+ if (!secretKey) {
56
+ throw new Error("Client secret key is required for the x402 facilitator");
57
+ }
58
+ const serverWalletAddress = config.serverWalletAddress;
59
+ if (!serverWalletAddress) {
60
+ throw new Error(
61
+ "Server wallet address is required for the x402 facilitator",
62
+ );
63
+ }
64
+ return {
65
+ url: (config.baseUrl ?? DEFAULT_BASE_URL) as `${string}://${string}`,
66
+ createAuthHeaders: async () => {
67
+ return {
68
+ verify: {
69
+ "x-secret-key": secretKey,
70
+ },
71
+ settle: {
72
+ "x-secret-key": secretKey,
73
+ "x-settlement-wallet-address": serverWalletAddress,
74
+ ...(config.vaultAccessToken
75
+ ? { "x-vault-access-token": config.vaultAccessToken }
76
+ : {}),
77
+ },
78
+ supported: {
79
+ "x-secret-key": secretKey,
80
+ },
81
+ list: {
82
+ "x-secret-key": secretKey,
83
+ },
84
+ };
85
+ },
86
+ };
87
+ }
@@ -0,0 +1,173 @@
1
+ import { createPaymentHeader } from "x402/client";
2
+ import {
3
+ ChainIdToNetwork,
4
+ EvmNetworkToChainId,
5
+ type PaymentRequirements,
6
+ PaymentRequirementsSchema,
7
+ type Signer,
8
+ } from "x402/types";
9
+ import { viemAdapter } from "../adapters/viem.js";
10
+ import { getCachedChain } from "../chains/utils.js";
11
+ import type { ThirdwebClient } from "../client/client.js";
12
+ import type { Wallet } from "../wallets/interfaces/wallet.js";
13
+
14
+ /**
15
+ * Enables the payment of APIs using the x402 payment protocol.
16
+ *
17
+ * This function wraps the native fetch API to automatically handle 402 Payment Required responses
18
+ * by creating and sending a payment header. It will:
19
+ * 1. Make the initial request
20
+ * 2. If a 402 response is received, parse the payment requirements
21
+ * 3. Verify the payment amount is within the allowed maximum
22
+ * 4. Create a payment header using the provided wallet client
23
+ * 5. Retry the request with the payment header
24
+ *
25
+ * @param fetch - The fetch function to wrap (typically globalThis.fetch)
26
+ * @param client - The thirdweb client used to access RPC infrastructure
27
+ * @param wallet - The wallet used to sign payment messages
28
+ * @param maxValue - The maximum allowed payment amount in base units (defaults to 1 USDC)
29
+ * @returns A wrapped fetch function that handles 402 responses automatically
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * import { wrapFetchWithPayment } from "thirdweb/x402";
34
+ * import { createThirdwebClient } from "thirdweb";
35
+ * import { createWallet } from "thirdweb/wallets";
36
+ *
37
+ * const client = createThirdwebClient({ clientId: "your-client-id" });
38
+ * const wallet = createWallet("io.metamask");
39
+ * await wallet.connect({ client })
40
+ *
41
+ * const fetchWithPay = wrapFetchWithPayment(fetch, client, wallet);
42
+ *
43
+ * // Make a request that may require payment
44
+ * const response = await fetchWithPay('https://api.example.com/paid-endpoint');
45
+ * ```
46
+ *
47
+ * @throws {Error} If the payment amount exceeds the maximum allowed value
48
+ * @throws {Error} If a payment has already been attempted for this request
49
+ * @throws {Error} If there's an error creating the payment header
50
+ *
51
+ * @bridge x402
52
+ */
53
+ export function wrapFetchWithPayment(
54
+ fetch: typeof globalThis.fetch,
55
+ client: ThirdwebClient,
56
+ wallet: Wallet,
57
+ maxValue: bigint = BigInt(1 * 10 ** 6), // Default to 1 USDC
58
+ ) {
59
+ return async (input: RequestInfo, init?: RequestInit) => {
60
+ const response = await fetch(input, init);
61
+
62
+ if (response.status !== 402) {
63
+ return response;
64
+ }
65
+
66
+ const { x402Version, accepts } = (await response.json()) as {
67
+ x402Version: number;
68
+ accepts: unknown[];
69
+ };
70
+ const parsedPaymentRequirements = accepts
71
+ .map((x) => PaymentRequirementsSchema.parse(x))
72
+ .filter((x) => x.scheme === "exact"); // TODO (402): accept other schemes
73
+
74
+ const account = wallet.getAccount();
75
+ let chain = wallet.getChain();
76
+
77
+ if (!account || !chain) {
78
+ throw new Error(
79
+ "Wallet not connected. Please connect your wallet to continue.",
80
+ );
81
+ }
82
+ const selectedPaymentRequirements = defaultPaymentRequirementsSelector(
83
+ parsedPaymentRequirements,
84
+ chain.id,
85
+ "exact",
86
+ );
87
+
88
+ if (BigInt(selectedPaymentRequirements.maxAmountRequired) > maxValue) {
89
+ throw new Error("Payment amount exceeds maximum allowed");
90
+ }
91
+
92
+ const paymentChainId = EvmNetworkToChainId.get(
93
+ selectedPaymentRequirements.network,
94
+ );
95
+
96
+ if (!paymentChainId) {
97
+ throw new Error(
98
+ `No chain found for the selected payment requirement: ${selectedPaymentRequirements.network}`,
99
+ );
100
+ }
101
+
102
+ // switch to the payment chain if it's not the current chain
103
+ if (paymentChainId !== chain.id) {
104
+ await wallet.switchChain(getCachedChain(paymentChainId));
105
+ chain = wallet.getChain();
106
+ if (!chain) {
107
+ throw new Error(`Failed to switch chain (${paymentChainId})`);
108
+ }
109
+ }
110
+
111
+ const walletClient = viemAdapter.wallet.toViem({
112
+ wallet: wallet,
113
+ chain,
114
+ client,
115
+ }) as Signer;
116
+
117
+ const paymentHeader = await createPaymentHeader(
118
+ walletClient,
119
+ x402Version,
120
+ selectedPaymentRequirements,
121
+ );
122
+
123
+ const initParams = init || {};
124
+
125
+ if ((initParams as { __is402Retry?: boolean }).__is402Retry) {
126
+ throw new Error("Payment already attempted");
127
+ }
128
+
129
+ const newInit = {
130
+ ...initParams,
131
+ headers: {
132
+ ...(initParams.headers || {}),
133
+ "X-PAYMENT": paymentHeader,
134
+ "Access-Control-Expose-Headers": "X-PAYMENT-RESPONSE",
135
+ },
136
+ __is402Retry: true,
137
+ };
138
+
139
+ const secondResponse = await fetch(input, newInit);
140
+ return secondResponse;
141
+ };
142
+ }
143
+
144
+ function defaultPaymentRequirementsSelector(
145
+ paymentRequirements: PaymentRequirements[],
146
+ chainId: number,
147
+ scheme: "exact",
148
+ ) {
149
+ if (!paymentRequirements.length) {
150
+ throw new Error(
151
+ "No valid payment requirements found in server 402 response",
152
+ );
153
+ }
154
+ const currentWalletNetwork = ChainIdToNetwork[chainId];
155
+ // find the payment requirements matching the connected wallet chain
156
+ const matchingPaymentRequirements = paymentRequirements.find(
157
+ (x) => x.network === currentWalletNetwork && x.scheme === scheme,
158
+ );
159
+
160
+ if (matchingPaymentRequirements) {
161
+ return matchingPaymentRequirements;
162
+ } else {
163
+ // if no matching payment requirements, use the first payment requirement
164
+ // and switch the wallet to that chain
165
+ const firstPaymentRequirement = paymentRequirements.find(
166
+ (x) => x.scheme === scheme,
167
+ );
168
+ if (!firstPaymentRequirement) {
169
+ throw new Error("No suitable payment requirements found");
170
+ }
171
+ return firstPaymentRequirement;
172
+ }
173
+ }