nullpath-mcp 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/release.yml +43 -0
- package/.releaserc.json +9 -0
- package/README.md +63 -70
- package/SWARM_SPEC.md +75 -0
- package/dist/__tests__/payment.test.d.ts +2 -0
- package/dist/__tests__/payment.test.d.ts.map +1 -0
- package/dist/__tests__/payment.test.js +106 -0
- package/dist/__tests__/payment.test.js.map +1 -0
- package/dist/index.js +144 -23
- package/dist/index.js.map +1 -1
- package/dist/lib/eip3009.d.ts +128 -0
- package/dist/lib/eip3009.d.ts.map +1 -0
- package/dist/lib/eip3009.js +151 -0
- package/dist/lib/eip3009.js.map +1 -0
- package/dist/lib/payment.d.ts +99 -0
- package/dist/lib/payment.d.ts.map +1 -0
- package/dist/lib/payment.js +254 -0
- package/dist/lib/payment.js.map +1 -0
- package/dist/lib/wallet.d.ts +81 -0
- package/dist/lib/wallet.d.ts.map +1 -0
- package/dist/lib/wallet.js +131 -0
- package/dist/lib/wallet.js.map +1 -0
- package/docs/API_DESIGN.md +698 -0
- package/docs/CODE_REVIEW.md +322 -0
- package/package.json +4 -1
- package/src/__tests__/payment.test.ts +126 -0
- package/src/index.ts +160 -27
- package/src/lib/eip3009.ts +201 -0
- package/src/lib/payment.ts +334 -0
- package/src/lib/wallet.ts +164 -0
- package/dist/__tests__/x402.test.d.ts +0 -2
- package/dist/__tests__/x402.test.d.ts.map +0 -1
- package/dist/__tests__/x402.test.js +0 -187
- package/dist/__tests__/x402.test.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;GAYG;;AAEH,wEAAmE;AACnE,wEAAiF;AACjF,iEAG4C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;GAYG;;AAEH,wEAAmE;AACnE,wEAAiF;AACjF,iEAG4C;AAC5C,iDAQ0B;AAC1B,+CAAiE;AAEjE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,6BAA6B,CAAC;AAEvF,mBAAmB;AACnB,MAAM,KAAK,GAAG;IACZ;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,2HAA2H;QACxI,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8DAA8D,EAAE;gBACtG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;gBAC9F,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;aAClF;SACF;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,yGAAyG;QACtH,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;aAC3D;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,8DAA8D;QAC3E,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,uDAAuD;QACpE,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;aAC3D;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,sHAAsH;QACnI,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;gBAC1D,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBAC1E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;aAC9E;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC;SAC/C;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,wGAAwG;QACrH,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;gBACnD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;gBACjE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;gBAChF,YAAY,EAAE;oBACZ,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,mCAAmC;oBAChD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;yBACvE;qBACF;iBACF;gBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;aACpE;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,CAAC;SACxE;KACF;CACF,CAAC;AAEF,aAAa;AACb,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,UAAuB,EAAE;IAChE,MAAM,GAAG,GAAG,GAAG,gBAAgB,GAAG,QAAQ,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,GAAG,OAAO;QACV,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,OAAO,CAAC,OAAO;SACnB;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,gBAAgB;AAChB,KAAK,UAAU,oBAAoB,CAAC,IAA2D;IAC7F,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAC,QAAQ;QAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE3D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEpE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAyB;IACxD,OAAO,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,qBAAqB;IAClC,0DAA0D;IAC1D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAgE,CAAC;IACzG,MAAM,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,YAAsC,EAAE,CAAC;gBAC/D,IAAI,GAAG,CAAC,EAAE;oBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,IAAyB;IAC5D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAMrD,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB;QAC/C,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;QAClC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY;KACzC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAA+D;IAC/F,+DAA+D;IAC/D,IAAI,CAAC,IAAA,+BAAkB,GAAE,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE,4FAA4F;YACrG,IAAI,EAAE,yEAAyE;SAChF,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,IAAI,CAAC;QACH,IAAA,wBAAY,GAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,mCAAsB,EAAE,CAAC;YAC5C,OAAO;gBACL,KAAK,EAAE,oBAAoB;gBAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,4FAA4F;aACnG,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,gBAAgB,UAAU,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,aAAa,EAAE,IAAI,CAAC,OAAO;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAA,6BAAgB,EAAC,GAAG,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,IAAI;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6B,CAAC;QAEhE,+CAA+C;QAC/C,MAAM,aAAa,GAAG,IAAA,4BAAgB,GAAE,IAAI,SAAS,CAAC;QACtD,OAAO;YACL,GAAG,MAAM;YACT,QAAQ,EAAE;gBACR,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,aAAa;aACpB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qCAAwB,EAAE,CAAC;YAC9C,OAAO;gBACL,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,wDAAwD;aAC/D,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,iCAAoB,EAAE,CAAC;YAC1C,OAAO;gBACL,KAAK,EAAE,gBAAgB;gBACvB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;oBACjC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS;oBACvC,MAAM,EAAE,IAAA,6BAAgB,EAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;iBACpD,CAAC,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,gCAAmB,EAAE,CAAC;YACzC,OAAO;gBACL,KAAK,EAAE,wBAAwB;gBAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,6DAA6D;aACpE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAMlC;IACC,+DAA+D;IAC/D,IAAI,CAAC,IAAA,+BAAkB,GAAE,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE,kEAAkE;YAC3E,IAAI,EAAE,wGAAwG;SAC/G,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,IAAI,CAAC;QACH,IAAA,wBAAY,GAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,mCAAsB,EAAE,CAAC;YAC5C,OAAO;gBACL,KAAK,EAAE,oBAAoB;gBAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,4FAA4F;aACnG,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,gBAAgB,SAAS,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAA,6BAAgB,EAAC,GAAG,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,IAAI;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6B,CAAC;QAEhE,+CAA+C;QAC/C,MAAM,aAAa,GAAG,IAAA,4BAAgB,GAAE,IAAI,SAAS,CAAC;QACtD,OAAO;YACL,GAAG,MAAM;YACT,QAAQ,EAAE;gBACR,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,YAAY;aACnB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qCAAwB,EAAE,CAAC;YAC9C,OAAO;gBACL,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,sCAAsC;aAC7C,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,iCAAoB,EAAE,CAAC;YAC1C,OAAO;gBACL,KAAK,EAAE,gBAAgB;gBACvB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;oBACjC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS;oBACvC,MAAM,EAAE,IAAA,6BAAgB,EAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;iBACpD,CAAC,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,gCAAmB,EAAE,CAAC;YACzC,OAAO;gBACL,KAAK,EAAE,wBAAwB;gBAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,qDAAqD;aAC5D,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,cAAc;AACd,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;KACF,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,iBAAiB,CAAC,iCAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,CAAC,iBAAiB,CAAC,gCAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC;YACH,IAAI,MAAe,CAAC;YAEpB,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,iBAAiB;oBACpB,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAA6D,CAAC,CAAC;oBACnG,MAAM;gBACR,KAAK,cAAc;oBACjB,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAA2B,CAAC,CAAC;oBAC9D,MAAM;gBACR,KAAK,kBAAkB;oBACrB,MAAM,GAAG,MAAM,qBAAqB,EAAE,CAAC;oBACvC,MAAM;gBACR,KAAK,kBAAkB;oBACrB,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAA2B,CAAC,CAAC;oBAClE,MAAM;gBACR,KAAK,eAAe;oBAClB,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAiE,CAAC,CAAC;oBACrG,MAAM;gBACR,KAAK,gBAAgB;oBACnB,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAMlC,CAAC,CAAC;oBACH,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU,OAAO,EAAE;qBAC1B;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC/C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EIP-3009: Transfer With Authorization for USDC
|
|
3
|
+
*
|
|
4
|
+
* Implements typed data structures and signing for USDC's
|
|
5
|
+
* TransferWithAuthorization function, enabling gasless transfers
|
|
6
|
+
* where a third party can submit the transaction.
|
|
7
|
+
*
|
|
8
|
+
* @see https://eips.ethereum.org/EIPS/eip-3009
|
|
9
|
+
*/
|
|
10
|
+
import type { WalletClient } from 'viem';
|
|
11
|
+
/**
|
|
12
|
+
* USDC contract address on Base mainnet
|
|
13
|
+
*/
|
|
14
|
+
export declare const USDC_ADDRESS_BASE: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
15
|
+
/**
|
|
16
|
+
* USDC decimals (standard across all networks)
|
|
17
|
+
*/
|
|
18
|
+
export declare const USDC_DECIMALS = 6;
|
|
19
|
+
/**
|
|
20
|
+
* EIP-712 Domain for USDC on Base
|
|
21
|
+
*/
|
|
22
|
+
export declare const USDC_DOMAIN: {
|
|
23
|
+
readonly name: "USD Coin";
|
|
24
|
+
readonly version: "2";
|
|
25
|
+
readonly chainId: 8453;
|
|
26
|
+
readonly verifyingContract: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* EIP-712 types for TransferWithAuthorization
|
|
30
|
+
*/
|
|
31
|
+
export declare const TRANSFER_WITH_AUTHORIZATION_TYPES: {
|
|
32
|
+
readonly TransferWithAuthorization: readonly [{
|
|
33
|
+
readonly name: "from";
|
|
34
|
+
readonly type: "address";
|
|
35
|
+
}, {
|
|
36
|
+
readonly name: "to";
|
|
37
|
+
readonly type: "address";
|
|
38
|
+
}, {
|
|
39
|
+
readonly name: "value";
|
|
40
|
+
readonly type: "uint256";
|
|
41
|
+
}, {
|
|
42
|
+
readonly name: "validAfter";
|
|
43
|
+
readonly type: "uint256";
|
|
44
|
+
}, {
|
|
45
|
+
readonly name: "validBefore";
|
|
46
|
+
readonly type: "uint256";
|
|
47
|
+
}, {
|
|
48
|
+
readonly name: "nonce";
|
|
49
|
+
readonly type: "bytes32";
|
|
50
|
+
}];
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Parameters for TransferWithAuthorization
|
|
54
|
+
*/
|
|
55
|
+
export interface TransferAuthorizationParams {
|
|
56
|
+
/** Sender address (must match wallet) */
|
|
57
|
+
from: `0x${string}`;
|
|
58
|
+
/** Recipient address */
|
|
59
|
+
to: `0x${string}`;
|
|
60
|
+
/** Amount in atomic units (6 decimals for USDC) */
|
|
61
|
+
value: bigint;
|
|
62
|
+
/** Unix timestamp after which the authorization is valid */
|
|
63
|
+
validAfter: bigint;
|
|
64
|
+
/** Unix timestamp before which the authorization is valid */
|
|
65
|
+
validBefore: bigint;
|
|
66
|
+
/** Unique nonce (32 bytes) to prevent replay */
|
|
67
|
+
nonce: `0x${string}`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Signed authorization ready to submit on-chain
|
|
71
|
+
*/
|
|
72
|
+
export interface SignedTransferAuthorization extends TransferAuthorizationParams {
|
|
73
|
+
/** EIP-712 signature */
|
|
74
|
+
signature: `0x${string}`;
|
|
75
|
+
/** Signature v component */
|
|
76
|
+
v: number;
|
|
77
|
+
/** Signature r component */
|
|
78
|
+
r: `0x${string}`;
|
|
79
|
+
/** Signature s component */
|
|
80
|
+
s: `0x${string}`;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generate a cryptographically random nonce (32 bytes)
|
|
84
|
+
*/
|
|
85
|
+
export declare function generateNonce(): `0x${string}`;
|
|
86
|
+
/**
|
|
87
|
+
* Convert USD amount to USDC atomic units
|
|
88
|
+
*/
|
|
89
|
+
export declare function usdToAtomicUsdc(usd: number): bigint;
|
|
90
|
+
/**
|
|
91
|
+
* Convert USDC atomic units to USD
|
|
92
|
+
*/
|
|
93
|
+
export declare function atomicUsdcToUsd(atomic: bigint): number;
|
|
94
|
+
/**
|
|
95
|
+
* Sign a TransferWithAuthorization message
|
|
96
|
+
*
|
|
97
|
+
* Creates an EIP-712 signature that authorizes a transfer of USDC
|
|
98
|
+
* from the signer's wallet to a recipient. The signature can be
|
|
99
|
+
* submitted by anyone to execute the transfer.
|
|
100
|
+
*
|
|
101
|
+
* @param walletClient - viem wallet client with signing capability
|
|
102
|
+
* @param params - Transfer authorization parameters
|
|
103
|
+
* @returns Signed authorization with signature components
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* const signed = await signTransferAuthorization(walletClient, {
|
|
108
|
+
* from: '0x...',
|
|
109
|
+
* to: '0x...',
|
|
110
|
+
* value: usdToAtomicUsdc(0.10),
|
|
111
|
+
* validAfter: 0n,
|
|
112
|
+
* validBefore: BigInt(Math.floor(Date.now() / 1000) + 3600),
|
|
113
|
+
* nonce: generateNonce(),
|
|
114
|
+
* });
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export declare function signTransferAuthorization(walletClient: WalletClient, params: TransferAuthorizationParams): Promise<SignedTransferAuthorization>;
|
|
118
|
+
/**
|
|
119
|
+
* Create transfer authorization params with sensible defaults
|
|
120
|
+
*
|
|
121
|
+
* @param from - Sender address
|
|
122
|
+
* @param to - Recipient address
|
|
123
|
+
* @param amountUsd - Amount in USD
|
|
124
|
+
* @param validitySeconds - How long the authorization is valid (default 5 minutes)
|
|
125
|
+
* @returns TransferAuthorizationParams ready for signing
|
|
126
|
+
*/
|
|
127
|
+
export declare function createTransferAuthorizationParams(from: `0x${string}`, to: `0x${string}`, amountUsd: number, validitySeconds?: number): TransferAuthorizationParams;
|
|
128
|
+
//# sourceMappingURL=eip3009.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip3009.d.ts","sourceRoot":"","sources":["../../src/lib/eip3009.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAG,4CAAqD,CAAC;AAEvF;;GAEG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;CASpC,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,yCAAyC;IACzC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IACpB,wBAAwB;IACxB,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,2BAA2B;IAC9E,wBAAwB;IACxB,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,4BAA4B;IAC5B,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,4BAA4B;IAC5B,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,KAAK,MAAM,EAAE,CAI7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,2BAA2B,CAAC,CA8CtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,KAAK,MAAM,EAAE,EACnB,EAAE,EAAE,KAAK,MAAM,EAAE,EACjB,SAAS,EAAE,MAAM,EACjB,eAAe,GAAE,MAAY,GAC5B,2BAA2B,CAW7B"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* EIP-3009: Transfer With Authorization for USDC
|
|
4
|
+
*
|
|
5
|
+
* Implements typed data structures and signing for USDC's
|
|
6
|
+
* TransferWithAuthorization function, enabling gasless transfers
|
|
7
|
+
* where a third party can submit the transaction.
|
|
8
|
+
*
|
|
9
|
+
* @see https://eips.ethereum.org/EIPS/eip-3009
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TRANSFER_WITH_AUTHORIZATION_TYPES = exports.USDC_DOMAIN = exports.USDC_DECIMALS = exports.USDC_ADDRESS_BASE = void 0;
|
|
13
|
+
exports.generateNonce = generateNonce;
|
|
14
|
+
exports.usdToAtomicUsdc = usdToAtomicUsdc;
|
|
15
|
+
exports.atomicUsdcToUsd = atomicUsdcToUsd;
|
|
16
|
+
exports.signTransferAuthorization = signTransferAuthorization;
|
|
17
|
+
exports.createTransferAuthorizationParams = createTransferAuthorizationParams;
|
|
18
|
+
/**
|
|
19
|
+
* USDC contract address on Base mainnet
|
|
20
|
+
*/
|
|
21
|
+
exports.USDC_ADDRESS_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
|
|
22
|
+
/**
|
|
23
|
+
* USDC decimals (standard across all networks)
|
|
24
|
+
*/
|
|
25
|
+
exports.USDC_DECIMALS = 6;
|
|
26
|
+
/**
|
|
27
|
+
* EIP-712 Domain for USDC on Base
|
|
28
|
+
*/
|
|
29
|
+
exports.USDC_DOMAIN = {
|
|
30
|
+
name: 'USD Coin',
|
|
31
|
+
version: '2',
|
|
32
|
+
chainId: 8453,
|
|
33
|
+
verifyingContract: exports.USDC_ADDRESS_BASE,
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* EIP-712 types for TransferWithAuthorization
|
|
37
|
+
*/
|
|
38
|
+
exports.TRANSFER_WITH_AUTHORIZATION_TYPES = {
|
|
39
|
+
TransferWithAuthorization: [
|
|
40
|
+
{ name: 'from', type: 'address' },
|
|
41
|
+
{ name: 'to', type: 'address' },
|
|
42
|
+
{ name: 'value', type: 'uint256' },
|
|
43
|
+
{ name: 'validAfter', type: 'uint256' },
|
|
44
|
+
{ name: 'validBefore', type: 'uint256' },
|
|
45
|
+
{ name: 'nonce', type: 'bytes32' },
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Generate a cryptographically random nonce (32 bytes)
|
|
50
|
+
*/
|
|
51
|
+
function generateNonce() {
|
|
52
|
+
const bytes = new Uint8Array(32);
|
|
53
|
+
crypto.getRandomValues(bytes);
|
|
54
|
+
return `0x${Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('')}`;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Convert USD amount to USDC atomic units
|
|
58
|
+
*/
|
|
59
|
+
function usdToAtomicUsdc(usd) {
|
|
60
|
+
return BigInt(Math.round(usd * 10 ** exports.USDC_DECIMALS));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Convert USDC atomic units to USD
|
|
64
|
+
*/
|
|
65
|
+
function atomicUsdcToUsd(atomic) {
|
|
66
|
+
return Number(atomic) / 10 ** exports.USDC_DECIMALS;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Sign a TransferWithAuthorization message
|
|
70
|
+
*
|
|
71
|
+
* Creates an EIP-712 signature that authorizes a transfer of USDC
|
|
72
|
+
* from the signer's wallet to a recipient. The signature can be
|
|
73
|
+
* submitted by anyone to execute the transfer.
|
|
74
|
+
*
|
|
75
|
+
* @param walletClient - viem wallet client with signing capability
|
|
76
|
+
* @param params - Transfer authorization parameters
|
|
77
|
+
* @returns Signed authorization with signature components
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* const signed = await signTransferAuthorization(walletClient, {
|
|
82
|
+
* from: '0x...',
|
|
83
|
+
* to: '0x...',
|
|
84
|
+
* value: usdToAtomicUsdc(0.10),
|
|
85
|
+
* validAfter: 0n,
|
|
86
|
+
* validBefore: BigInt(Math.floor(Date.now() / 1000) + 3600),
|
|
87
|
+
* nonce: generateNonce(),
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
async function signTransferAuthorization(walletClient, params) {
|
|
92
|
+
const account = walletClient.account;
|
|
93
|
+
if (!account) {
|
|
94
|
+
throw new Error('Wallet client must have an account');
|
|
95
|
+
}
|
|
96
|
+
// Verify from address matches wallet
|
|
97
|
+
if (params.from.toLowerCase() !== account.address.toLowerCase()) {
|
|
98
|
+
throw new Error(`From address ${params.from} does not match wallet address ${account.address}`);
|
|
99
|
+
}
|
|
100
|
+
// Sign the typed data
|
|
101
|
+
const signature = await walletClient.signTypedData({
|
|
102
|
+
account,
|
|
103
|
+
domain: exports.USDC_DOMAIN,
|
|
104
|
+
types: exports.TRANSFER_WITH_AUTHORIZATION_TYPES,
|
|
105
|
+
primaryType: 'TransferWithAuthorization',
|
|
106
|
+
message: {
|
|
107
|
+
from: params.from,
|
|
108
|
+
to: params.to,
|
|
109
|
+
value: params.value,
|
|
110
|
+
validAfter: params.validAfter,
|
|
111
|
+
validBefore: params.validBefore,
|
|
112
|
+
nonce: params.nonce,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
// Validate signature length (65 bytes = 130 hex chars + 0x prefix)
|
|
116
|
+
if (signature.length !== 132) {
|
|
117
|
+
throw new Error(`Unexpected signature length: ${signature.length}, expected 132`);
|
|
118
|
+
}
|
|
119
|
+
// Extract v, r, s components from signature
|
|
120
|
+
const r = `0x${signature.slice(2, 66)}`;
|
|
121
|
+
const s = `0x${signature.slice(66, 130)}`;
|
|
122
|
+
const v = parseInt(signature.slice(130, 132), 16);
|
|
123
|
+
return {
|
|
124
|
+
...params,
|
|
125
|
+
signature,
|
|
126
|
+
v,
|
|
127
|
+
r,
|
|
128
|
+
s,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Create transfer authorization params with sensible defaults
|
|
133
|
+
*
|
|
134
|
+
* @param from - Sender address
|
|
135
|
+
* @param to - Recipient address
|
|
136
|
+
* @param amountUsd - Amount in USD
|
|
137
|
+
* @param validitySeconds - How long the authorization is valid (default 5 minutes)
|
|
138
|
+
* @returns TransferAuthorizationParams ready for signing
|
|
139
|
+
*/
|
|
140
|
+
function createTransferAuthorizationParams(from, to, amountUsd, validitySeconds = 300) {
|
|
141
|
+
const now = Math.floor(Date.now() / 1000);
|
|
142
|
+
return {
|
|
143
|
+
from,
|
|
144
|
+
to,
|
|
145
|
+
value: usdToAtomicUsdc(amountUsd),
|
|
146
|
+
validAfter: 0n, // Valid immediately
|
|
147
|
+
validBefore: BigInt(now + validitySeconds),
|
|
148
|
+
nonce: generateNonce(),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=eip3009.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip3009.js","sourceRoot":"","sources":["../../src/lib/eip3009.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payment Integration for nullpath MCP Client
|
|
3
|
+
*
|
|
4
|
+
* Handles x402 payment flow:
|
|
5
|
+
* 1. Parse 402 Payment Required responses
|
|
6
|
+
* 2. Sign EIP-3009 TransferWithAuthorization
|
|
7
|
+
* 3. Encode payment header for retry
|
|
8
|
+
*/
|
|
9
|
+
import { type SignedTransferAuthorization } from './eip3009.js';
|
|
10
|
+
import { type NullpathWallet } from './wallet.js';
|
|
11
|
+
/**
|
|
12
|
+
* Payment requirements from 402 response
|
|
13
|
+
*/
|
|
14
|
+
export interface PaymentRequirements {
|
|
15
|
+
/** Recipient wallet address */
|
|
16
|
+
recipient: `0x${string}`;
|
|
17
|
+
/** Amount in atomic USDC units */
|
|
18
|
+
amount: bigint;
|
|
19
|
+
/** USDC contract address */
|
|
20
|
+
asset: `0x${string}`;
|
|
21
|
+
/** Chain ID (8453 for Base) */
|
|
22
|
+
network: number;
|
|
23
|
+
/** Unix timestamp - authorization valid after */
|
|
24
|
+
validAfter: bigint;
|
|
25
|
+
/** Unix timestamp - authorization valid before */
|
|
26
|
+
validBefore: bigint;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Payment header payload
|
|
30
|
+
*/
|
|
31
|
+
export interface PaymentPayload {
|
|
32
|
+
signature: string;
|
|
33
|
+
from: string;
|
|
34
|
+
to: string;
|
|
35
|
+
value: string;
|
|
36
|
+
validAfter: string;
|
|
37
|
+
validBefore: string;
|
|
38
|
+
nonce: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Error thrown when payment is required but cannot be made
|
|
42
|
+
*/
|
|
43
|
+
export declare class PaymentRequiredError extends Error {
|
|
44
|
+
readonly requirements?: PaymentRequirements | undefined;
|
|
45
|
+
constructor(message: string, requirements?: PaymentRequirements | undefined);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Error thrown when payment signing fails
|
|
49
|
+
*/
|
|
50
|
+
export declare class PaymentSigningError extends Error {
|
|
51
|
+
readonly cause?: Error | undefined;
|
|
52
|
+
constructor(message: string, cause?: Error | undefined);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Parse 402 Payment Required response headers
|
|
56
|
+
*
|
|
57
|
+
* Extracts payment requirements from X-PAYMENT-REQUIRED header.
|
|
58
|
+
* The header contains base64-encoded JSON with payment details.
|
|
59
|
+
*
|
|
60
|
+
* @param response - Fetch Response object
|
|
61
|
+
* @returns PaymentRequirements or null if not a 402 response
|
|
62
|
+
*/
|
|
63
|
+
export declare function parsePaymentRequired(response: Response): PaymentRequirements | null;
|
|
64
|
+
/**
|
|
65
|
+
* Sign a payment using EIP-3009 TransferWithAuthorization
|
|
66
|
+
*
|
|
67
|
+
* @param wallet - NullpathWallet instance
|
|
68
|
+
* @param requirements - Payment requirements from 402 response
|
|
69
|
+
* @returns Signed authorization
|
|
70
|
+
*/
|
|
71
|
+
export declare function signPayment(wallet: NullpathWallet, requirements: PaymentRequirements): Promise<SignedTransferAuthorization>;
|
|
72
|
+
/**
|
|
73
|
+
* Encode signed authorization as X-PAYMENT header value
|
|
74
|
+
*
|
|
75
|
+
* @param signed - Signed transfer authorization
|
|
76
|
+
* @returns Base64-encoded JSON string for X-PAYMENT header
|
|
77
|
+
*/
|
|
78
|
+
export declare function encodePaymentHeader(signed: SignedTransferAuthorization): string;
|
|
79
|
+
/**
|
|
80
|
+
* Execute a fetch request with automatic x402 payment handling
|
|
81
|
+
*
|
|
82
|
+
* If the server returns 402 Payment Required:
|
|
83
|
+
* 1. Parse payment requirements
|
|
84
|
+
* 2. Sign EIP-3009 authorization
|
|
85
|
+
* 3. Retry with X-PAYMENT header
|
|
86
|
+
*
|
|
87
|
+
* @param url - Request URL
|
|
88
|
+
* @param options - Fetch options
|
|
89
|
+
* @returns Fetch Response
|
|
90
|
+
* @throws WalletNotConfiguredError if 402 and no wallet
|
|
91
|
+
* @throws PaymentSigningError if signing fails
|
|
92
|
+
*/
|
|
93
|
+
export declare function fetchWithPayment(url: string, options?: RequestInit): Promise<Response>;
|
|
94
|
+
/**
|
|
95
|
+
* Format amount in human-readable USDC (using bigint arithmetic to avoid precision loss)
|
|
96
|
+
*/
|
|
97
|
+
export declare function formatUsdcAmount(atomic: bigint): string;
|
|
98
|
+
export { isWalletConfigured, WalletNotConfiguredError, InvalidPrivateKeyError } from './wallet.js';
|
|
99
|
+
//# sourceMappingURL=payment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../src/lib/payment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAKL,KAAK,2BAA2B,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAKrB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC;IACrB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAG3B,YAAY,CAAC,EAAE,mBAAmB;gBADlD,OAAO,EAAE,MAAM,EACC,YAAY,CAAC,EAAE,mBAAmB,YAAA;CAKrD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aACC,KAAK,CAAC,EAAE,KAAK;gBAA9C,OAAO,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,KAAK,YAAA;CAI3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,GAAG,IAAI,CAkBnF;AA8CD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,2BAA2B,CAAC,CA8BtC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM,CAY/E;AAgBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,QAAQ,CAAC,CAyEnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvD;AAGD,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
|