@metamask/transaction-pay-controller 24.0.2 → 24.1.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 (55) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/LICENSE +1 -0
  3. package/dist/strategy/relay/relay-quotes.cjs +6 -6
  4. package/dist/strategy/relay/relay-quotes.cjs.map +1 -1
  5. package/dist/strategy/relay/relay-quotes.d.cts.map +1 -1
  6. package/dist/strategy/relay/relay-quotes.d.mts.map +1 -1
  7. package/dist/strategy/relay/relay-quotes.mjs +8 -8
  8. package/dist/strategy/relay/relay-quotes.mjs.map +1 -1
  9. package/dist/strategy/server/perps.cjs +18 -1
  10. package/dist/strategy/server/perps.cjs.map +1 -1
  11. package/dist/strategy/server/perps.d.cts +5 -1
  12. package/dist/strategy/server/perps.d.cts.map +1 -1
  13. package/dist/strategy/server/perps.d.mts +5 -1
  14. package/dist/strategy/server/perps.d.mts.map +1 -1
  15. package/dist/strategy/server/perps.mjs +18 -1
  16. package/dist/strategy/server/perps.mjs.map +1 -1
  17. package/dist/strategy/server/server-quotes.cjs +68 -19
  18. package/dist/strategy/server/server-quotes.cjs.map +1 -1
  19. package/dist/strategy/server/server-quotes.d.cts.map +1 -1
  20. package/dist/strategy/server/server-quotes.d.mts.map +1 -1
  21. package/dist/strategy/server/server-quotes.mjs +69 -20
  22. package/dist/strategy/server/server-quotes.mjs.map +1 -1
  23. package/dist/strategy/server/server-submit.cjs +389 -61
  24. package/dist/strategy/server/server-submit.cjs.map +1 -1
  25. package/dist/strategy/server/server-submit.d.cts.map +1 -1
  26. package/dist/strategy/server/server-submit.d.mts.map +1 -1
  27. package/dist/strategy/server/server-submit.mjs +390 -62
  28. package/dist/strategy/server/server-submit.mjs.map +1 -1
  29. package/dist/strategy/server/types.cjs.map +1 -1
  30. package/dist/strategy/server/types.d.cts +20 -4
  31. package/dist/strategy/server/types.d.cts.map +1 -1
  32. package/dist/strategy/server/types.d.mts +20 -4
  33. package/dist/strategy/server/types.d.mts.map +1 -1
  34. package/dist/strategy/server/types.mjs.map +1 -1
  35. package/dist/utils/feature-flags.cjs +24 -1
  36. package/dist/utils/feature-flags.cjs.map +1 -1
  37. package/dist/utils/feature-flags.d.cts +9 -0
  38. package/dist/utils/feature-flags.d.cts.map +1 -1
  39. package/dist/utils/feature-flags.d.mts +9 -0
  40. package/dist/utils/feature-flags.d.mts.map +1 -1
  41. package/dist/utils/feature-flags.mjs +23 -1
  42. package/dist/utils/feature-flags.mjs.map +1 -1
  43. package/dist/utils/token.cjs +1 -1
  44. package/dist/utils/token.cjs.map +1 -1
  45. package/dist/utils/token.d.cts.map +1 -1
  46. package/dist/utils/token.d.mts.map +1 -1
  47. package/dist/utils/token.mjs +3 -3
  48. package/dist/utils/token.mjs.map +1 -1
  49. package/dist/utils/transaction.cjs +4 -1
  50. package/dist/utils/transaction.cjs.map +1 -1
  51. package/dist/utils/transaction.d.cts.map +1 -1
  52. package/dist/utils/transaction.d.mts.map +1 -1
  53. package/dist/utils/transaction.mjs +4 -1
  54. package/dist/utils/transaction.mjs.map +1 -1
  55. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"server-submit.mjs","sourceRoot":"","sources":["../../../src/strategy/server/server-submit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,mCAAmC;AAMpE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB;AACrD,OAAO,EAAE,SAAS,EAAE,qBAAqB;AAEzC,OAAO,EAAE,aAAa,EAAE,yBAAqB;AAM7C,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACxB,sCAAkC;AACnC,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC5B,oCAAgC;AACjC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,yBAAqB;AAOnE,OAAO,EAAE,YAAY,EAAE,oBAAgB;AAEvC,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA+C;IAE/C,GAAG,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAExC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAEnD,IAAI,eAAgC,CAAC;IAErC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,CAAC,EAAE,eAAe,EAAE,GAAG,MAAM,wBAAwB,CACnD,KAAK,EACL,SAAS,EACT,WAAW,CACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,KAAuC,EACvC,SAA4C,EAC5C,WAA4B;IAE5B,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;IAE5C,iBAAiB,CACf;QACE,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,SAAS;QACT,IAAI,EAAE,uCAAuC;KAC9C,EACD,CAAC,EAAE,EAAE,EAAE;QACL,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;IAChC,CAAC,CACF,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,8BAA8B,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAC9C,KAAK,CAAC,QAAQ,EACd,SAAS,EACT,WAAW,CAAC,EAAE,CACf,CAAC;IAEF,GAAG,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;IAE5C,iBAAiB,CACf;QACE,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,SAAS;QACT,IAAI,EAAE,yCAAyC;KAChD,EACD,CAAC,EAAE,EAAE,EAAE;QACL,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC7B,CAAC,CACF,CAAC;IAEF,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,KAAuC,EACvC,SAA4C,EAC5C,WAA4B;IAE5B,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9C,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CACpC,gDAAgD,EAChD,aAAa,CACd,CAAC;IAEF,MAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7D,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAY;KACzB,CAAC,CAAC,CAAC;IAEJ,MAAM,qBAAqB,GAAG;QAC5B,GAAG,WAAW;QACd,OAAO,EAAE,aAAa;QACtB,eAAe;QACf,kBAAkB;QAClB,QAAQ,EAAE;YACR,GAAG,WAAW,CAAC,QAAQ;YACvB,IAAI;SACL;KACiB,CAAC;IAErB,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,CACrC,mDAAmD,EACnD,EAAE,WAAW,EAAE,qBAAqB,EAAE,CACvC,CAAC;IAEF,GAAG,CAAC,2CAA2C,EAAE,UAAU,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAwB;QACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;QACjC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC;QAC9B,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;QAChD,GAAG,CAAC,UAAU,CAAC,iBAAiB,EAAE,MAAM;YACtC,CAAC,CAAC;gBACE,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7D,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBACzB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC7B,CAAC,EAAE,IAAI,CAAC,CAAQ;oBAChB,CAAC,EAAE,IAAI,CAAC,CAAQ;iBACjB,CAAC,CAAC;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEvE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,yBAAyB,cAAc,CAAC,KAAK,IAAI,SAAS,EAAE,CAC7D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,KAAuC,EACvC,SAA4C,EAC5C,WAA4B;IAE5B,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAClE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CACpC,gDAAgD,EAChD,aAAa,CACd,CAAC;IAEF,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAC7D,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC9C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAC3E,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB;QAChD,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,SAAS,CAAC;IAEd,GAAG,CAAC,sCAAsC,EAAE;QAC1C,IAAI;QACJ,WAAW;QACX,MAAM;QACN,eAAe;QACf,aAAa;QACb,SAAS,EAAE,KAAK,CAAC,MAAM;KACxB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,EAAE,GAAG,EAAE,GAAG,qBAAqB,CACnC,aAAa,EACb,IAAI,EACJ,SAAS,EACT,CAAC,aAAa,EAAE,EAAE;QAChB,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,iBAAiB,CACf;YACE,aAAa,EAAE,WAAW,CAAC,EAAE;YAC7B,SAAS;YACT,IAAI,EAAE,oDAAoD;SAC3D,EACD,CAAC,EAAE,EAAE,EAAE;YACL,EAAE,CAAC,sBAAsB,KAAzB,EAAE,CAAC,sBAAsB,GAAK,EAAE,EAAC;YACjC,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC,CACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,IAAI,CAAC;QACH,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,qBAAqB,GAAG;gBAC5B,WAAW;gBACX,UAAU,EAAE,IAAI;gBAChB,eAAe;gBACf,MAAM,EAAE,eAAe;gBACvB,eAAe,EAAE,KAAK;aACvB,CAAC;YAEF,GAAG,CAAC,wBAAwB,EAAE;gBAC5B,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBAC5B,OAAO,EAAE,qBAAqB;aAC/B,CAAC,CAAC;YAEH,MAAM,SAAS,CAAC,IAAI,CAClB,sCAAsC,EACtC,iBAAiB,CAAC,CAAC,CAAC,EACpB,qBAAqB,CACtB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE9D,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5D,MAAM,GAAG,GAAG,CAAC,YAAY;oBACvB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAE1C,CAAC;gBAEd,OAAO;oBACL,MAAM,EAAE;wBACN,IAAI,EAAE,MAAM,CAAC,IAAW;wBACxB,GAAG;wBACH,YAAY,EAAE,MAAM,CAAC,YAAmB;wBACxC,oBAAoB,EAAE,MAAM,CAAC,oBAA2B;wBACxD,EAAE,EAAE,MAAM,CAAC,EAAS;wBACpB,KAAK,EAAE,MAAM,CAAC,KAAY;qBAC3B;iBACF,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,0BAA0B,GAAG;gBACjC,IAAI;gBACJ,GAAG,CAAC,YAAY,KAAK,SAAS;oBAC5B,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;oBACvB,CAAC,CAAC;wBACE,WAAW,EAAE,KAAK;wBAClB,WAAW,EAAE,IAAI;wBACjB,iBAAiB,EAAE,IAAI;wBACvB,YAAY;qBACb,CAAC;gBACN,WAAW;gBACX,UAAU,EAAE,IAAI;gBAChB,eAAe;gBACf,MAAM,EAAE,eAAe;gBACvB,gBAAgB,EAAE,IAAI;gBACtB,eAAe,EAAE,KAAK;gBACtB,YAAY,EAAE,iBAAiB;aAChC,CAAC;YAEF,GAAG,CAAC,6BAA6B,EAAE,0BAA0B,CAAC,CAAC;YAE/D,MAAM,SAAS,CAAC,IAAI,CAClB,2CAA2C,EAC3C,0BAA0B,CAC3B,CAAC;QACJ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,GAAG,EAAE,CAAC;IACR,CAAC;IAED,GAAG,CAAC,2BAA2B,EAAE,cAAc,CAAC,CAAC;IAEjD,MAAM,OAAO,CAAC,GAAG,CACf,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAC3E,CAAC;IAEF,GAAG,CAAC,+BAA+B,EAAE,cAAc,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,MAAM;QACvB,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI;QACzC,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,UAAU,EAAE,CAAC;QACf,iBAAiB,CACf;YACE,aAAa,EAAE,WAAW,CAAC,EAAE;YAC7B,SAAS;YACT,IAAI,EAAE,oDAAoD;SAC3D,EACD,CAAC,EAAE,EAAE,EAAE;YACL,EAAE,CAAC,WAAW,KAAd,EAAE,CAAC,WAAW,GAAK,EAAE,EAAC;YACtB,EAAE,CAAC,WAAW,CAAC,UAAU,GAAG,UAAiB,CAAC;QAChD,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,IAAqB,EACrB,IAAS,EACT,QAAiB,EACjB,kBAA2B,EAC3B,0BAAmC;IAEnC,IAAI,GAAoB,CAAC;IACzB,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,IAAI,kBAAkB,CAAC;IACrE,MAAM,4BAA4B,GAChC,IAAI,CAAC,oBAAoB,IAAI,0BAA0B,CAAC;IAE1D,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI;QACJ,GAAG;QACH,YAAY,EAAE,oBAAoB;YAChC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;YAC7B,CAAC,CAAC,SAAS;QACb,oBAAoB,EAAE,4BAA4B;YAChD,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC;YACrC,CAAC,CAAC,SAAS;QACb,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;KACzB,CAAC;IAEF,GAAG,CAAC,gBAAgB,EAAE;QACpB,IAAI,EAAE;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;QACD,MAAM,EAAE;YACN,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,KAAkB,EAClB,SAA4C,EAC5C,aAAqB;IAErB,MAAM,eAAe,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,cAAc,KAAK,SAAS,IAAI,cAAc,GAAG,CAAC,CAAC;IAEtE,GAAG,CAAC,uBAAuB,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;IAElE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,UAA8B,CAAC;IACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,cAAgD,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAEpD,cAAc,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE;gBAChD,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,IAAI,EAAE,EAAE,IAAI;aAC9C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC;YACnC,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAE5D,IAAI,CAAC,iBAAiB,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;gBACpD,iBAAiB,GAAG,IAAI,CAAC;gBACzB,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;gBAEtC,iBAAiB,CACf;oBACE,aAAa;oBACb,SAAS;oBACT,IAAI,EAAE,oCAAoC;iBAC3C,EACD,CAAC,EAAE,EAAE,EAAE;oBACL,EAAE,CAAC,WAAW,KAAd,EAAE,CAAC,WAAW,GAAK,EAAE,EAAC;oBACtB,EAAE,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;gBACzC,CAAC,CACF,CAAC;YACJ,CAAC;YAED,IAAI,cAAc,CAAC,MAAM,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;gBACrD,OAAO,cAAc,CAAC,UAAU,IAAI,IAAI,CAAC;YAC3C,CAAC;YAED,IACE,cAAc,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;gBAC7C,cAAc,CAAC,MAAM,KAAK,YAAY,CAAC,QAAQ,EAC/C,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,cAAc,EAAE,CAAC;YAC3D,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC","sourcesContent":["import { ORIGIN_METAMASK, toHex } from '@metamask/controller-utils';\nimport type {\n TransactionMeta,\n TransactionParams,\n} from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport { projectLogger } from '../../logger';\nimport type {\n PayStrategyExecuteRequest,\n TransactionPayControllerMessenger,\n TransactionPayQuote,\n} from '../../types';\nimport {\n getServerPollingInterval,\n getServerPollingTimeout,\n} from '../../utils/feature-flags';\nimport {\n collectTransactionIds,\n getTransaction,\n updateTransaction,\n waitForTransactionConfirmed,\n} from '../../utils/transaction';\nimport { getServerStatus, submitServerIntent } from './server-api';\nimport type {\n ServerQuote,\n ServerQuoteStep,\n ServerStatusResponse,\n ServerSubmitRequest,\n} from './types';\nimport { ServerStatus } from './types';\n\nconst log = createModuleLogger(projectLogger, 'server-strategy');\n\n/**\n * Submits server intent quotes.\n *\n * @param request - Request object.\n * @returns An object containing the transaction hash if available.\n */\nexport async function submitServerQuotes(\n request: PayStrategyExecuteRequest<ServerQuote>,\n): Promise<{ transactionHash?: Hex }> {\n log('Executing server quotes', request);\n\n const { quotes, messenger, transaction } = request;\n\n let transactionHash: Hex | undefined;\n\n for (const quote of quotes) {\n ({ transactionHash } = await executeSingleServerQuote(\n quote,\n messenger,\n transaction,\n ));\n }\n\n return { transactionHash };\n}\n\nasync function executeSingleServerQuote(\n quote: TransactionPayQuote<ServerQuote>,\n messenger: TransactionPayControllerMessenger,\n transaction: TransactionMeta,\n): Promise<{ transactionHash?: Hex }> {\n log('Executing single server quote', quote);\n\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Remove nonce from skipped transaction',\n },\n (tx) => {\n tx.txParams.nonce = undefined;\n },\n );\n\n if (quote.original.gasless) {\n await submitViaServerExecute(quote, messenger, transaction);\n } else {\n await submitViaTransactionController(quote, messenger, transaction);\n }\n\n const targetHash = await waitForServerCompletion(\n quote.original,\n messenger,\n transaction.id,\n );\n\n log('Server request completed', targetHash);\n\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Intent complete after Server completion',\n },\n (tx) => {\n tx.isIntentComplete = true;\n },\n );\n\n return { transactionHash: targetHash };\n}\n\nasync function submitViaServerExecute(\n quote: TransactionPayQuote<ServerQuote>,\n messenger: TransactionPayControllerMessenger,\n transaction: TransactionMeta,\n): Promise<void> {\n const { from, sourceChainId } = quote.request;\n const networkClientId = messenger.call(\n 'NetworkController:findNetworkClientIdByChainId',\n sourceChainId,\n );\n\n const nestedTransactions = quote.original.steps.map((step) => ({\n data: step.data,\n to: step.to,\n value: step.value as Hex,\n }));\n\n const sourceCallTransaction = {\n ...transaction,\n chainId: sourceChainId,\n networkClientId,\n nestedTransactions,\n txParams: {\n ...transaction.txParams,\n from,\n },\n } as TransactionMeta;\n\n const delegation = await messenger.call(\n 'TransactionPayController:getDelegationTransaction',\n { transaction: sourceCallTransaction },\n );\n\n log('Delegation result for server source calls', delegation);\n\n const submitBody: ServerSubmitRequest = {\n provider: quote.original.provider,\n id: quote.original.id,\n chainId: Number(sourceChainId),\n to: delegation.to,\n data: delegation.data,\n value: new BigNumber(delegation.value).toFixed(),\n ...(delegation.authorizationList?.length\n ? {\n authorizationList: delegation.authorizationList.map((auth) => ({\n chainId: Number(auth.chainId),\n address: auth.address,\n nonce: Number(auth.nonce),\n yParity: Number(auth.yParity),\n r: auth.r as Hex,\n s: auth.s as Hex,\n })),\n }\n : {}),\n };\n\n const submitResponse = await submitServerIntent(messenger, submitBody);\n\n if (!submitResponse.success) {\n throw new Error(\n `Server submit failed: ${submitResponse.error ?? 'unknown'}`,\n );\n }\n}\n\nasync function submitViaTransactionController(\n quote: TransactionPayQuote<ServerQuote>,\n messenger: TransactionPayControllerMessenger,\n transaction: TransactionMeta,\n): Promise<void> {\n const { from, sourceChainId, sourceTokenAddress } = quote.request;\n const { steps } = quote.original;\n\n if (steps.length === 0) {\n throw new Error('Server quote has no steps to submit');\n }\n\n const networkClientId = messenger.call(\n 'NetworkController:findNetworkClientIdByChainId',\n sourceChainId,\n );\n\n const { gasLimits, is7702, maxFeePerGas, maxPriorityFeePerGas } =\n quote.original.client;\n const transactionParams = steps.map((step, i) =>\n stepToParams(step, from, gasLimits[i], maxFeePerGas, maxPriorityFeePerGas),\n );\n const gasFeeToken = quote.fees.isSourceGasFeeToken\n ? sourceTokenAddress\n : undefined;\n\n log('Submitting via TransactionController', {\n from,\n gasFeeToken,\n is7702,\n networkClientId,\n sourceChainId,\n stepCount: steps.length,\n });\n\n const transactionIds: string[] = [];\n const { end } = collectTransactionIds(\n sourceChainId,\n from,\n messenger,\n (transactionId) => {\n transactionIds.push(transactionId);\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Add required transaction ID from server submission',\n },\n (tx) => {\n tx.requiredTransactionIds ??= [];\n tx.requiredTransactionIds.push(transactionId);\n },\n );\n },\n );\n\n try {\n if (transactionParams.length === 1) {\n const addTransactionOptions = {\n gasFeeToken,\n isInternal: true,\n networkClientId,\n origin: ORIGIN_METAMASK,\n requireApproval: false,\n };\n\n log('Calling addTransaction', {\n params: transactionParams[0],\n options: addTransactionOptions,\n });\n\n await messenger.call(\n 'TransactionController:addTransaction',\n transactionParams[0],\n addTransactionOptions,\n );\n } else {\n const gasLimit7702 = is7702 ? toHex(gasLimits[0]) : undefined;\n\n const batchTransactions = transactionParams.map((params, i) => {\n const gas = (gasLimit7702 ??\n (gasLimits[i] === undefined ? undefined : params.gas)) as\n | Hex\n | undefined;\n\n return {\n params: {\n data: params.data as Hex,\n gas,\n maxFeePerGas: params.maxFeePerGas as Hex,\n maxPriorityFeePerGas: params.maxPriorityFeePerGas as Hex,\n to: params.to as Hex,\n value: params.value as Hex,\n },\n };\n });\n\n const addTransactionBatchOptions = {\n from,\n ...(gasLimit7702 === undefined\n ? { disable7702: true }\n : {\n disable7702: false,\n disableHook: true,\n disableSequential: true,\n gasLimit7702,\n }),\n gasFeeToken,\n isInternal: true,\n networkClientId,\n origin: ORIGIN_METAMASK,\n overwriteUpgrade: true,\n requireApproval: false,\n transactions: batchTransactions,\n };\n\n log('Calling addTransactionBatch', addTransactionBatchOptions);\n\n await messenger.call(\n 'TransactionController:addTransactionBatch',\n addTransactionBatchOptions,\n );\n }\n } finally {\n end();\n }\n\n log('Server transactions added', transactionIds);\n\n await Promise.all(\n transactionIds.map((txId) => waitForTransactionConfirmed(txId, messenger)),\n );\n\n log('Server transactions confirmed', transactionIds);\n\n const lastId = transactionIds.at(-1);\n const sourceHash = lastId\n ? getTransaction(lastId, messenger)?.hash\n : undefined;\n\n if (sourceHash) {\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Add source hash from server transaction submission',\n },\n (tx) => {\n tx.metamaskPay ??= {};\n tx.metamaskPay.sourceHash = sourceHash as Hex;\n },\n );\n }\n}\n\nfunction stepToParams(\n step: ServerQuoteStep,\n from: Hex,\n gasLimit?: number,\n clientMaxFeePerGas?: string,\n clientMaxPriorityFeePerGas?: string,\n): TransactionParams {\n let gas: Hex | undefined;\n if (gasLimit) {\n gas = toHex(gasLimit);\n } else if (step.gasLimit) {\n gas = toHex(step.gasLimit);\n }\n\n const resolvedMaxFeePerGas = step.maxFeePerGas ?? clientMaxFeePerGas;\n const resolvedMaxPriorityFeePerGas =\n step.maxPriorityFeePerGas ?? clientMaxPriorityFeePerGas;\n\n const params = {\n data: step.data,\n from,\n gas,\n maxFeePerGas: resolvedMaxFeePerGas\n ? toHex(resolvedMaxFeePerGas)\n : undefined,\n maxPriorityFeePerGas: resolvedMaxPriorityFeePerGas\n ? toHex(resolvedMaxPriorityFeePerGas)\n : undefined,\n to: step.to,\n value: toHex(step.value),\n };\n\n log('Step to params', {\n step: {\n gasLimit: step.gasLimit,\n maxFeePerGas: step.maxFeePerGas,\n maxPriorityFeePerGas: step.maxPriorityFeePerGas,\n value: step.value,\n },\n params: {\n gas: params.gas,\n maxFeePerGas: params.maxFeePerGas,\n maxPriorityFeePerGas: params.maxPriorityFeePerGas,\n value: params.value,\n },\n });\n\n return params;\n}\n\nasync function waitForServerCompletion(\n quote: ServerQuote,\n messenger: TransactionPayControllerMessenger,\n transactionId: string,\n): Promise<Hex | undefined> {\n const pollingInterval = getServerPollingInterval(messenger);\n const pollingTimeout = getServerPollingTimeout(messenger);\n const hasTimeout = pollingTimeout !== undefined && pollingTimeout > 0;\n\n log('Server polling config', { pollingInterval, pollingTimeout });\n\n const startTime = Date.now();\n\n let lastStatus: string | undefined;\n let sourceHashEmitted = false;\n\n while (true) {\n let statusResponse: ServerStatusResponse | undefined;\n\n try {\n const tx = getTransaction(transactionId, messenger);\n\n statusResponse = await getServerStatus(messenger, {\n provider: quote.provider,\n id: quote.id,\n hash: tx?.metamaskPay?.sourceHash ?? tx?.hash,\n });\n } catch (error) {\n log('Polling network error', error);\n }\n\n if (statusResponse) {\n lastStatus = statusResponse.status;\n log('Polled status', statusResponse.status, statusResponse);\n\n if (!sourceHashEmitted && statusResponse.sourceHash) {\n sourceHashEmitted = true;\n const { sourceHash } = statusResponse;\n\n updateTransaction(\n {\n transactionId,\n messenger,\n note: 'Add source hash from server status',\n },\n (tx) => {\n tx.metamaskPay ??= {};\n tx.metamaskPay.sourceHash = sourceHash;\n },\n );\n }\n\n if (statusResponse.status === ServerStatus.Confirmed) {\n return statusResponse.targetHash ?? '0x';\n }\n\n if (\n statusResponse.status === ServerStatus.Failed ||\n statusResponse.status === ServerStatus.Refunded\n ) {\n throw new Error(`Server intent ${statusResponse.status.toLowerCase()}`);\n }\n }\n\n if (hasTimeout && Date.now() - startTime >= pollingTimeout) {\n const statusDetail = lastStatus ? ` (last status: ${lastStatus})` : '';\n throw new Error(`Server polling timed out${statusDetail}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollingInterval));\n }\n}\n"]}
1
+ {"version":3,"file":"server-submit.mjs","sourceRoot":"","sources":["../../../src/strategy/server/server-submit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,KAAK,EACN,mCAAmC;AACpC,OAAO,EAAE,oBAAoB,EAAE,qCAAqC;AAOpE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB;AACrD,OAAO,EAAE,SAAS,EAAE,qBAAqB;AAEzC,OAAO,EAAE,aAAa,EAAE,yBAAqB;AAM7C,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACxB,sCAAkC;AACnC,OAAO,EAAE,kBAAkB,EAAE,iCAA6B;AAC1D,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EACnB,8BAA0B;AAC3B,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC5B,oCAAgC;AACjC,OAAO,EAAE,mBAAmB,EAAE,+BAA2B;AACzD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,yBAAqB;AAQnE,OAAO,EAAE,YAAY,EAAE,oBAAgB;AAEvC,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAEjE,MAAM,gBAAgB,GAAmD;IACvE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;IAC7C,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;IACjE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;CACxC,CAAC;AAEF,SAAS,eAAe,CACtB,IAAkC;IAElC,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;AACnC,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAkC;IAElC,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA+C;IAE/C,GAAG,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAExC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAEnD,IAAI,eAAgC,CAAC;IAErC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,CAAC,EAAE,eAAe,EAAE,GAAG,MAAM,wBAAwB,CACnD,KAAK,EACL,SAAS,EACT,WAAW,CACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,KAAuC,EACvC,SAA4C,EAC5C,WAA4B;IAE5B,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;IAE5C,iBAAiB,CACf;QACE,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,SAAS;QACT,IAAI,EAAE,uCAAuC;KAC9C,EACD,CAAC,EAAE,EAAE,EAAE;QACL,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;IAChC,CAAC,CACF,CAAC;IAEF,kFAAkF;IAClF,mFAAmF;IACnF,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAEpE,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,gDAAgD;IAChD,MAAM,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAE5D,mEAAmE;IACnE,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAC9C,KAAK,CAAC,QAAQ,EACd,SAAS,EACT,WAAW,CAAC,EAAE,CACf,CAAC;IAEF,GAAG,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;IAE5C,iBAAiB,CACf;QACE,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,SAAS;QACT,IAAI,EAAE,yCAAyC;KAChD,EACD,CAAC,EAAE,EAAE,EAAE;QACL,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC7B,CAAC,CACF,CAAC;IAEF,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,sBAAsB,CACnC,KAAuC,EACvC,SAA4C,EAC5C,WAA4B;IAE5B,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAExE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,uEAAuE;QACvE,qEAAqE;QACrE,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAE5E,uEAAuE;IACvE,8EAA8E;IAC9E,2EAA2E;IAC3E,IAAI,CAAC,mBAAmB,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7D,MAAM,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAC5C,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,SAAS,CACV,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,MAAM,8BAA8B,CAClC,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,CACZ,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,sBAAsB,CACnC,KAAuC,EACvC,gBAAyC,EACzC,WAA4B,EAC5B,SAA4C;IAE5C,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAC7D,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE,GACrD,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,MAAM,YAAY,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACnD,uBAAuB,CACrB,IAAI,EACJ,CAAC,EACD,gBAAgB,CAAC,MAAM,EACvB,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,YAAY,CACb,CACF,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,4BAA4B,CACjC,WAAW,EACX,KAAK,EACL,WAAW,EACX,SAAS,CACV,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAC3C,OAAO,sBAAsB,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,uBAAuB,CAC9B,IAA2B,EAC3B,KAAa,EACb,UAAkB,EAClB,IAAS,EACT,SAAmB,EACnB,kBAAsC,EACtC,0BAA8C,EAC9C,YAAqC;IAErC,IAAI,GAAoB,CAAC;IACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAElC,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,IAAI,kBAAkB,CAAC;IACrE,MAAM,4BAA4B,GAChC,IAAI,CAAC,oBAAoB,IAAI,0BAA0B,CAAC;IAE1D,MAAM,MAAM,GAAsB;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI;QACJ,GAAG;QACH,YAAY,EAAE,oBAAoB;YAChC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;YAC7B,CAAC,CAAC,SAAS;QACb,oBAAoB,EAAE,4BAA4B;YAChD,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC;YACrC,CAAC,CAAC,SAAS;QACb,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,CAAC;QACzD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;KACzB,CAAC;IAEF,GAAG,CAAC,mCAAmC,EAAE;QACvC,KAAK;QACL,IAAI,EAAE;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;QACD,MAAM,EAAE;YACN,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,kBAAkB,CACzB,KAAa,EACb,UAAkB,EAClB,YAAqC;IAErC,MAAM,WAAW,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAEtD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAE,oBAAwC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAC1B,YAAqC;IAErC,OAAO,CACL,CAAC,YAAY,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAClD,cAAkC,CACpC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,2BAA2B,CAClC,WAA4B;IAE5B,IAAI,WAAW,CAAC,IAAI,KAAM,OAA2B,EAAE,CAAC;QACtD,OAAO,WAAW,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,kBAAkB,EAAE,IAAI,CACrD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,mBAAmB,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,CAC9D,EAAE,IAAI,CAAC;IAER,OAAO,UAAU,IAAI,WAAW,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,4BAA4B,CACzC,WAAgC,EAChC,KAAuC,EACvC,WAA4B,EAC5B,SAA4C;IAE5C,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,IAAI,CACxC,mCAAmC,CACpC,CAAC;IAEF,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CACnD,iDAAiD,EACjD;QACE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK;QAChC,WAAW;QACX,eAAe,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;KACjD,CACF,CAAC;IAEF,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAC1B,GAAG,CAAC,sCAAsC,CAAC,CAAC;QAC5C,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1E,OAAO,CAAC,GAAI,aAAqC,EAAE,GAAG,WAAW,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,sBAAsB,CACnC,WAAgC,EAChC,KAAuC,EACvC,WAA4B,EAC5B,SAA4C;IAE5C,MAAM,kBAAkB,GACtB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;QAC/B,WAAW,CAAC,QAAQ,CAAC,IAAY,CAAC,WAAW,EAAE,CAAC;IAEnD,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IAErE,IAAI,eAAkC,CAAC;IAEvC,IAAI,kBAAkB,EAAE,CAAC;QACvB,eAAe,GAAG,MAAM,4BAA4B,CAClD,WAAW,EACX,SAAS,CACV,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,eAAe,GAAG;YAChB,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAuB;YAClD,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI;YAC/B,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE;YAC3B,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,KAAwB;SAChC,CAAC;IACzB,CAAC;IAED,0EAA0E;IAC1E,sEAAsE;IACtE,eAAe,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,eAAe,CAAC,oBAAoB,GAAG,oBAAoB;QACzD,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAC7B,CAAC,CAAC,SAAS,CAAC;IAEd,GAAG,CAAC,mCAAmC,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAEjE,OAAO,CAAC,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,4BAA4B,CACzC,WAA4B,EAC5B,SAA4C;IAE5C,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,CACrC,mDAAmD,EACnD,EAAE,WAAW,EAAE,CAChB,CAAC;IAEF,GAAG,CAAC,8CAA8C,EAAE,UAAU,CAAC,CAAC;IAEhE,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAW;QACtC,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,KAAK,EAAE,UAAU,CAAC,KAAK;KACxB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,qBAAqB,CAClC,KAAuC,EACvC,SAA4C;IAE5C,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAElE,MAAM,4BAA4B,GAAG,qBAAqB,CACxD,kBAAkB,EAClB,aAAa,EACb,kBAAkB,CAAC,QAAQ,CAC5B,CAAC;IAEF,IAAI,cAAsB,CAAC;IAE3B,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,mBAAmB,CACxC,SAAS,EACT,IAAI,EACJ,aAAa,EACb,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,2CAA4C,KAAe,CAAC,OAAO,EAAE,CACtE,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;IAE9C,GAAG,CAAC,2BAA2B,EAAE;QAC/B,IAAI;QACJ,aAAa;QACb,kBAAkB;QAClB,cAAc;QACd,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;KAC5C,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,wDAAwD;YACtD,aAAa,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI;YAC5C,cAAc,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CACvC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,KAAuC,EACvC,SAA8B,EAC9B,SAA4C,EAC5C,WAA4B;IAE5B,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9C,MAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAErE,MAAM,kBAAkB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAQ;QAClC,EAAE,EAAE,MAAM,CAAC,EAAS;QACpB,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAQ;KACtC,CAAC,CAAC,CAAC;IAEJ,MAAM,qBAAqB,GAAG;QAC5B,GAAG,WAAW;QACd,OAAO,EAAE,aAAa;QACtB,eAAe;QACf,kBAAkB;QAClB,QAAQ,EAAE;YACR,GAAG,WAAW,CAAC,QAAQ;YACvB,IAAI;SACL;KACiB,CAAC;IAErB,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,CACrC,mDAAmD,EACnD,EAAE,WAAW,EAAE,qBAAqB,EAAE,CACvC,CAAC;IAEF,GAAG,CAAC,2CAA2C,EAAE,UAAU,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAwB;QACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;QACjC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC;QAC9B,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;QAChD,GAAG,CAAC,UAAU,CAAC,iBAAiB,EAAE,MAAM;YACtC,CAAC,CAAC;gBACE,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7D,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBACzB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC7B,CAAC,EAAE,IAAI,CAAC,CAAQ;oBAChB,CAAC,EAAE,IAAI,CAAC,CAAQ;iBACjB,CAAC,CAAC;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEvE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,yBAAyB,cAAc,CAAC,KAAK,IAAI,SAAS,EAAE,CAC7D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,KAAuC,EACvC,SAA8B,EAC9B,SAA4C,EAC5C,WAA4B;IAE5B,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAClE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IAEpD,MAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB;QAChD,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,SAAS,CAAC;IAEd,GAAG,CAAC,sCAAsC,EAAE;QAC1C,IAAI;QACJ,WAAW;QACX,MAAM;QACN,eAAe;QACf,UAAU,EAAE,SAAS,CAAC,MAAM;QAC5B,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,EAAE,GAAG,EAAE,GAAG,qBAAqB,CACnC,aAAa,EACb,IAAI,EACJ,SAAS,EACT,CAAC,aAAa,EAAE,EAAE;QAChB,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,iBAAiB,CACf;YACE,aAAa,EAAE,WAAW,CAAC,EAAE;YAC7B,SAAS;YACT,IAAI,EAAE,oDAAoD;SAC3D,EACD,CAAC,EAAE,EAAE,EAAE;YACL,EAAE,CAAC,sBAAsB,KAAzB,EAAE,CAAC,sBAAsB,GAAK,EAAE,EAAC;YACjC,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC,CACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,qBAAqB,GAAG;gBAC5B,WAAW;gBACX,UAAU,EAAE,IAAI;gBAChB,eAAe;gBACf,MAAM,EAAE,eAAe;gBACvB,eAAe,EAAE,KAAK;aACvB,CAAC;YAEF,GAAG,CAAC,wBAAwB,EAAE;gBAC5B,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBACpB,OAAO,EAAE,qBAAqB;aAC/B,CAAC,CAAC;YAEH,MAAM,SAAS,CAAC,IAAI,CAClB,sCAAsC,EACtC,SAAS,CAAC,CAAC,CAAC,EACZ,qBAAqB,CACtB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE9D,MAAM,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACjD,uEAAuE;gBACvE,iEAAiE;gBACjE,iEAAiE;gBACjE,+CAA+C;gBAC/C,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG,CAAoB,CAAC;gBAE5D,OAAO;oBACL,MAAM,EAAE;wBACN,IAAI,EAAE,MAAM,CAAC,IAAW;wBACxB,GAAG;wBACH,YAAY,EAAE,MAAM,CAAC,YAAmB;wBACxC,oBAAoB,EAAE,MAAM,CAAC,oBAA2B;wBACxD,EAAE,EAAE,MAAM,CAAC,EAAS;wBACpB,KAAK,EAAE,MAAM,CAAC,KAAY;qBAC3B;oBACD,IAAI,EAAE,MAAM,CAAC,IAAmC;iBACjD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,0BAA0B,GAAG;gBACjC,IAAI;gBACJ,GAAG,CAAC,YAAY,KAAK,SAAS;oBAC5B,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;oBACvB,CAAC,CAAC;wBACE,WAAW,EAAE,KAAK;wBAClB,WAAW,EAAE,IAAI;wBACjB,iBAAiB,EAAE,IAAI;wBACvB,YAAY;qBACb,CAAC;gBACN,WAAW;gBACX,UAAU,EAAE,IAAI;gBAChB,eAAe;gBACf,MAAM,EAAE,eAAe;gBACvB,gBAAgB,EAAE,IAAI;gBACtB,eAAe,EAAE,KAAK;gBACtB,YAAY,EAAE,iBAAiB;aAChC,CAAC;YAEF,GAAG,CAAC,6BAA6B,EAAE,0BAA0B,CAAC,CAAC;YAE/D,MAAM,SAAS,CAAC,IAAI,CAClB,2CAA2C,EAC3C,0BAA0B,CAC3B,CAAC;QACJ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,GAAG,EAAE,CAAC;IACR,CAAC;IAED,GAAG,CAAC,2BAA2B,EAAE,cAAc,CAAC,CAAC;IAEjD,MAAM,OAAO,CAAC,GAAG,CACf,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAC3E,CAAC;IAEF,GAAG,CAAC,+BAA+B,EAAE,cAAc,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,MAAM;QACvB,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI;QACzC,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,UAAU,EAAE,CAAC;QACf,iBAAiB,CACf;YACE,aAAa,EAAE,WAAW,CAAC,EAAE;YAC7B,SAAS;YACT,IAAI,EAAE,oDAAoD;SAC3D,EACD,CAAC,EAAE,EAAE,EAAE;YACL,EAAE,CAAC,WAAW,KAAd,EAAE,CAAC,WAAW,GAAK,EAAE,EAAC;YACtB,EAAE,CAAC,WAAW,CAAC,UAAU,GAAG,UAAiB,CAAC;QAChD,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,IAAyB,EACzB,IAAS,EACT,SAA4C;IAE5C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAE5B,MAAM,SAAS,GAAG;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE;YACL,GAAG,IAAI,CAAC,KAAK;YACb,YAAY,EAAE,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC;SAClD;QACD,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,KAAK;KACpB,CAAC;IAEF,GAAG,CAAC,uCAAuC,EAAE;QAC3C,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,CACpC,oCAAoC,EACpC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EACzC,oBAAoB,CAAC,EAAE,CACxB,CAAC;IAEF,MAAM,uBAAuB,CAC3B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,EACT,SAAS,EACT,IAAI,CAAC,eAAe,CACrB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,QAAgB,EAChB,MAAc,EACd,IAA6B,EAC7B,SAAiB,EACjB,eAAqC;IAErC,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,IAAI,QAAiC,CAAC;IAEtC,IAAI,eAAe,KAAK,YAAY,EAAE,CAAC;QACrC,GAAG,GAAG,GAAG,QAAQ,cAAc,SAAS,EAAE,CAAC;QAC3C,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,qCAAqC;QACrC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,qCAAqC;QACrC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1C,qCAAqC;QACrC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjD,CAAC;IAED,GAAG,CAAC,+BAA+B,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;IAE/D,IAAI,MAAe,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE;YAC1C,MAAM;YACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;SAC/B,CAAC,CAAC;QAEH,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAAgC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;IAE5C,yEAAyE;IACzE,yEAAyE;IACzE,2EAA2E;IAC3E,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAI,MAA8B,EAAE,MAAM,CAAC;QAEvD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAA+B;IAE/B,OAAO,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACjC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SAClE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,KAAkB,EAClB,SAA4C,EAC5C,aAAqB;IAErB,MAAM,eAAe,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,cAAc,KAAK,SAAS,IAAI,cAAc,GAAG,CAAC,CAAC;IAEtE,GAAG,CAAC,uBAAuB,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;IAElE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,UAA8B,CAAC;IACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,cAAgD,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAEpD,cAAc,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE;gBAChD,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,IAAI,EAAE,EAAE,IAAI;aAC9C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC;YACnC,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAE5D,IAAI,CAAC,iBAAiB,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;gBACpD,iBAAiB,GAAG,IAAI,CAAC;gBACzB,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;gBAEtC,iBAAiB,CACf;oBACE,aAAa;oBACb,SAAS;oBACT,IAAI,EAAE,oCAAoC;iBAC3C,EACD,CAAC,EAAE,EAAE,EAAE;oBACL,EAAE,CAAC,WAAW,KAAd,EAAE,CAAC,WAAW,GAAK,EAAE,EAAC;oBACtB,EAAE,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;gBACzC,CAAC,CACF,CAAC;YACJ,CAAC;YAED,IAAI,cAAc,CAAC,MAAM,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;gBACrD,OAAO,cAAc,CAAC,UAAU,IAAI,IAAI,CAAC;YAC3C,CAAC;YAED,IACE,cAAc,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;gBAC7C,cAAc,CAAC,MAAM,KAAK,YAAY,CAAC,QAAQ,EAC/C,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,cAAc,EAAE,CAAC;YAC3D,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC","sourcesContent":["import {\n ORIGIN_METAMASK,\n successfulFetch,\n toHex,\n} from '@metamask/controller-utils';\nimport { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport type {\n TransactionMeta,\n TransactionParams,\n TransactionType,\n} from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport { projectLogger } from '../../logger';\nimport type {\n PayStrategyExecuteRequest,\n TransactionPayControllerMessenger,\n TransactionPayQuote,\n} from '../../types';\nimport {\n getServerPollingInterval,\n getServerPollingTimeout,\n} from '../../utils/feature-flags';\nimport { getNetworkClientId } from '../../utils/provider';\nimport {\n getLiveTokenBalance,\n normalizeTokenAddress,\n TokenAddressTarget,\n} from '../../utils/token';\nimport {\n collectTransactionIds,\n getTransaction,\n updateTransaction,\n waitForTransactionConfirmed,\n} from '../../utils/transaction';\nimport { RELAY_DEPOSIT_TYPES } from '../relay/constants';\nimport { getServerStatus, submitServerIntent } from './server-api';\nimport type {\n ServerQuote,\n ServerSignatureStep,\n ServerTransactionStep,\n ServerStatusResponse,\n ServerSubmitRequest,\n} from './types';\nimport { ServerStatus } from './types';\n\nconst log = createModuleLogger(projectLogger, 'server-strategy');\n\nconst DOMAIN_FIELD_MAP: Record<string, { name: string; type: string }> = {\n name: { name: 'name', type: 'string' },\n version: { name: 'version', type: 'string' },\n chainId: { name: 'chainId', type: 'uint256' },\n verifyingContract: { name: 'verifyingContract', type: 'address' },\n salt: { name: 'salt', type: 'bytes32' },\n};\n\nfunction isSignatureStep(\n step: ServerQuote['steps'][number],\n): step is ServerSignatureStep {\n return step.type === 'signature';\n}\n\nfunction isTransactionStep(\n step: ServerQuote['steps'][number],\n): step is ServerTransactionStep {\n return step.type === 'transaction';\n}\n\n/**\n * Submits server intent quotes.\n *\n * @param request - Request object.\n * @returns An object containing the transaction hash if available.\n */\nexport async function submitServerQuotes(\n request: PayStrategyExecuteRequest<ServerQuote>,\n): Promise<{ transactionHash?: Hex }> {\n log('Executing server quotes', request);\n\n const { quotes, messenger, transaction } = request;\n\n let transactionHash: Hex | undefined;\n\n for (const quote of quotes) {\n ({ transactionHash } = await executeSingleServerQuote(\n quote,\n messenger,\n transaction,\n ));\n }\n\n return { transactionHash };\n}\n\nasync function executeSingleServerQuote(\n quote: TransactionPayQuote<ServerQuote>,\n messenger: TransactionPayControllerMessenger,\n transaction: TransactionMeta,\n): Promise<{ transactionHash?: Hex }> {\n log('Executing single server quote', quote);\n\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Remove nonce from skipped transaction',\n },\n (tx) => {\n tx.txParams.nonce = undefined;\n },\n );\n\n // Phase 1: off-chain signature steps (e.g. Relay authorize, HyperLiquid deposit).\n // Use quote.request.from (resolved accountOverride) not transaction.txParams.from.\n const signatureSteps = quote.original.steps.filter(isSignatureStep);\n\n for (const step of signatureSteps) {\n await submitSignatureStep(step, quote.request.from, messenger);\n }\n\n // Phase 2: on-chain transaction steps (if any).\n await submitTransactionSteps(quote, messenger, transaction);\n\n // Phase 3: poll until the intent is confirmed on the target chain.\n const targetHash = await waitForServerCompletion(\n quote.original,\n messenger,\n transaction.id,\n );\n\n log('Server request completed', targetHash);\n\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Intent complete after Server completion',\n },\n (tx) => {\n tx.isIntentComplete = true;\n },\n );\n\n return { transactionHash: targetHash };\n}\n\n/**\n * Submit the on-chain transaction steps for a server quote.\n *\n * Validates the source balance, builds the complete set of params (including\n * any post-quote or payment-override prepends), then dispatches to the\n * gasless execute path or TransactionController depending on the quote.\n *\n * No-ops when the quote has no transaction steps (signature-only flows).\n *\n * @param quote - Server quote.\n * @param messenger - Controller messenger.\n * @param transaction - Original transaction meta.\n */\nasync function submitTransactionSteps(\n quote: TransactionPayQuote<ServerQuote>,\n messenger: TransactionPayControllerMessenger,\n transaction: TransactionMeta,\n): Promise<void> {\n const transactionSteps = quote.original.steps.filter(isTransactionStep);\n\n if (transactionSteps.length === 0) {\n // Signature-only quotes (all steps are signature steps, no transaction\n // steps) have nothing to submit on-chain even when gasless is false.\n const hasSignatureSteps = quote.original.steps.some(isSignatureStep);\n if (!quote.original.gasless && !hasSignatureSteps) {\n throw new Error('Server quote has no steps to submit');\n }\n return;\n }\n\n const { isHyperliquidSource, isPostQuote, paymentOverride } = quote.request;\n\n // Skip balance check for HyperLiquid source flows (no on-chain debit),\n // post-quote flows (funds come from the Safe after the original tx executes),\n // and payment-override flows (funds are supplied by the override account).\n if (!isHyperliquidSource && !isPostQuote && !paymentOverride) {\n await validateSourceBalance(quote, messenger);\n }\n\n const allParams = await buildTransactionParams(\n quote,\n transactionSteps,\n transaction,\n messenger,\n );\n\n if (quote.original.gasless) {\n await submitViaServerExecute(quote, allParams, messenger, transaction);\n } else {\n await submitViaTransactionController(\n quote,\n allParams,\n messenger,\n transaction,\n );\n }\n}\n\n/**\n * Build the complete flat array of TransactionParams for on-chain submission.\n *\n * Converts server transaction steps to params, then prepends any additional\n * calls required by the payment override or post-quote flow. The returned\n * array is ready to pass directly to submitViaServerExecute or\n * submitViaTransactionController.\n *\n * @param quote - Server quote.\n * @param transactionSteps - Transaction steps from the quote (pre-filtered).\n * @param transaction - Original transaction meta.\n * @param messenger - Controller messenger.\n * @returns Complete ordered array of TransactionParams for submission.\n */\nasync function buildTransactionParams(\n quote: TransactionPayQuote<ServerQuote>,\n transactionSteps: ServerTransactionStep[],\n transaction: TransactionMeta,\n messenger: TransactionPayControllerMessenger,\n): Promise<TransactionParams[]> {\n const { from, isPostQuote, paymentOverride } = quote.request;\n const { gasLimits, maxFeePerGas, maxPriorityFeePerGas } =\n quote.original.client;\n const originalType = getEffectiveTransactionType(transaction);\n\n const relayParams = transactionSteps.map((step, i) =>\n transactionStepToParams(\n step,\n i,\n transactionSteps.length,\n from,\n gasLimits,\n maxFeePerGas,\n maxPriorityFeePerGas,\n originalType,\n ),\n );\n\n if (paymentOverride) {\n return prependPaymentOverrideParams(\n relayParams,\n quote,\n transaction,\n messenger,\n );\n }\n\n if (isPostQuote && transaction.txParams.to) {\n return prependPostQuoteParams(relayParams, quote, transaction, messenger);\n }\n\n return relayParams;\n}\n\n/**\n * Converts a single server transaction step to TransactionParams.\n *\n * @param step - The transaction step.\n * @param index - Zero-based position within the transaction steps array.\n * @param totalSteps - Total number of transaction steps (for type mapping).\n * @param from - Sender address.\n * @param gasLimits - Per-step gas limits from client-side estimation.\n * @param clientMaxFeePerGas - Client-side max fee per gas fallback.\n * @param clientMaxPriorityFeePerGas - Client-side max priority fee per gas fallback.\n * @param originalType - Effective type of the parent transaction.\n * @returns Normalized TransactionParams for this step.\n */\nfunction transactionStepToParams(\n step: ServerTransactionStep,\n index: number,\n totalSteps: number,\n from: Hex,\n gasLimits: number[],\n clientMaxFeePerGas: string | undefined,\n clientMaxPriorityFeePerGas: string | undefined,\n originalType: TransactionMeta['type'],\n): TransactionParams {\n let gas: Hex | undefined;\n const gasLimit = gasLimits[index];\n\n if (gasLimit) {\n gas = toHex(gasLimit);\n } else if (step.gasLimit) {\n gas = toHex(step.gasLimit);\n }\n\n const resolvedMaxFeePerGas = step.maxFeePerGas ?? clientMaxFeePerGas;\n const resolvedMaxPriorityFeePerGas =\n step.maxPriorityFeePerGas ?? clientMaxPriorityFeePerGas;\n\n const params: TransactionParams = {\n data: step.data,\n from,\n gas,\n maxFeePerGas: resolvedMaxFeePerGas\n ? toHex(resolvedMaxFeePerGas)\n : undefined,\n maxPriorityFeePerGas: resolvedMaxPriorityFeePerGas\n ? toHex(resolvedMaxPriorityFeePerGas)\n : undefined,\n to: step.to,\n type: getTransactionType(index, totalSteps, originalType),\n value: toHex(step.value),\n };\n\n log('Built transaction params for step', {\n index,\n step: {\n gasLimit: step.gasLimit,\n maxFeePerGas: step.maxFeePerGas,\n maxPriorityFeePerGas: step.maxPriorityFeePerGas,\n value: step.value,\n },\n params: {\n gas: params.gas,\n maxFeePerGas: params.maxFeePerGas,\n maxPriorityFeePerGas: params.maxPriorityFeePerGas,\n type: params.type,\n value: params.value,\n },\n });\n\n return params;\n}\n\n/**\n * Determine the relay deposit transaction type for a step at the given index.\n *\n * Single-step quotes always use the deposit type. In multi-step quotes the\n * first step is an approval and subsequent steps are deposits — matching the\n * Relay strategy's convention.\n *\n * @param index - Zero-based index of the step within the transaction step array.\n * @param totalSteps - Total number of transaction steps.\n * @param originalType - Effective type of the parent transaction.\n * @returns The mapped TransactionType for this step.\n */\nfunction getTransactionType(\n index: number,\n totalSteps: number,\n originalType: TransactionMeta['type'],\n): TransactionType {\n const depositType = getRelayDepositType(originalType);\n\n if (totalSteps === 1) {\n return depositType;\n }\n\n return index === 0 ? ('tokenMethodApprove' as TransactionType) : depositType;\n}\n\n/**\n * Get the relay deposit transaction type based on the parent transaction type.\n *\n * @param originalType - Type of the parent transaction.\n * @returns The mapped relay deposit type, or `relayDeposit` as a fallback.\n */\nfunction getRelayDepositType(\n originalType: TransactionMeta['type'],\n): TransactionType {\n return (\n (originalType && RELAY_DEPOSIT_TYPES[originalType]) ??\n ('relayDeposit' as TransactionType)\n );\n}\n\n/**\n * Get the effective transaction type, resolving through batch-type parent\n * transactions to find the nested perps/predict type.\n *\n * @param transaction - The transaction metadata.\n * @returns The resolved type from nested transactions, or the top-level type.\n */\nfunction getEffectiveTransactionType(\n transaction: TransactionMeta,\n): TransactionMeta['type'] {\n if (transaction.type !== ('batch' as TransactionType)) {\n return transaction.type;\n }\n\n const nestedType = transaction.nestedTransactions?.find(\n (tx) => tx.type && RELAY_DEPOSIT_TYPES[tx.type] !== undefined,\n )?.type;\n\n return nestedType ?? transaction.type;\n}\n\n/**\n * Prepend payment override calls before the relay transaction steps.\n *\n * For money-account payment override flows the override account supplies\n * the source funds. The override transactions must be batched ahead of the\n * relay deposit steps.\n *\n * @param relayParams - Already-built relay step params.\n * @param quote - Server quote.\n * @param transaction - Original transaction meta.\n * @param messenger - Controller messenger.\n * @returns Combined params with override calls prepended.\n */\nasync function prependPaymentOverrideParams(\n relayParams: TransactionParams[],\n quote: TransactionPayQuote<ServerQuote>,\n transaction: TransactionMeta,\n messenger: TransactionPayControllerMessenger,\n): Promise<TransactionParams[]> {\n const { transactionData } = messenger.call(\n 'TransactionPayController:getState',\n );\n\n const { calls: overrideCalls } = await messenger.call(\n 'TransactionPayController:getPaymentOverrideData',\n {\n amount: quote.sourceAmount.human,\n transaction,\n transactionData: transactionData[transaction.id],\n },\n );\n\n if (!overrideCalls.length) {\n log('No payment override calls to prepend');\n return relayParams;\n }\n\n log('Prepending payment override calls', { count: overrideCalls.length });\n\n return [...(overrideCalls as TransactionParams[]), ...relayParams];\n}\n\n/**\n * Prepend the original transaction (or a delegation-wrapped version) before\n * the relay deposit steps for post-quote flows.\n *\n * In post-quote flows the source tokens are held in the Safe and only become\n * available after the original transaction executes as part of the batch.\n * When an accountOverride is active the override account cannot directly\n * execute the original call, so it is wrapped in a delegation transaction.\n *\n * @param relayParams - Already-built relay step params.\n * @param quote - Server quote.\n * @param transaction - Original transaction meta.\n * @param messenger - Controller messenger.\n * @returns Combined params with the original tx prepended.\n */\nasync function prependPostQuoteParams(\n relayParams: TransactionParams[],\n quote: TransactionPayQuote<ServerQuote>,\n transaction: TransactionMeta,\n messenger: TransactionPayControllerMessenger,\n): Promise<TransactionParams[]> {\n const hasAccountOverride =\n quote.request.from.toLowerCase() !==\n (transaction.txParams.from as Hex).toLowerCase();\n\n const { maxFeePerGas, maxPriorityFeePerGas } = quote.original.client;\n\n let prependedParams: TransactionParams;\n\n if (hasAccountOverride) {\n prependedParams = await buildDelegatedOriginalParams(\n transaction,\n messenger,\n );\n } else {\n prependedParams = {\n data: transaction.txParams.data as Hex | undefined,\n from: transaction.txParams.from,\n to: transaction.txParams.to,\n value: transaction.txParams.value as Hex | undefined,\n } as TransactionParams;\n }\n\n // Ensure the prepended tx carries the same fee caps as the relay steps so\n // it isn't submitted with undefined maxFeePerGas in a non-7702 batch.\n prependedParams.maxFeePerGas = maxFeePerGas ? toHex(maxFeePerGas) : undefined;\n prependedParams.maxPriorityFeePerGas = maxPriorityFeePerGas\n ? toHex(maxPriorityFeePerGas)\n : undefined;\n\n log('Prepending post-quote original tx', { hasAccountOverride });\n\n return [prependedParams, ...relayParams];\n}\n\n/**\n * Build TransactionParams for a delegation that redeems the original\n * post-quote transaction on behalf of the override account.\n *\n * @param transaction - Original transaction meta to be redeemed.\n * @param messenger - Controller messenger.\n * @returns Transaction params for the delegation tx.\n */\nasync function buildDelegatedOriginalParams(\n transaction: TransactionMeta,\n messenger: TransactionPayControllerMessenger,\n): Promise<TransactionParams> {\n const delegation = await messenger.call(\n 'TransactionPayController:getDelegationTransaction',\n { transaction },\n );\n\n log('Delegation result for post-quote original tx', delegation);\n\n return {\n data: delegation.data,\n from: transaction.txParams.from as Hex,\n to: delegation.to,\n value: delegation.value,\n };\n}\n\n/**\n * Validate that the user's source token balance covers the quote's required\n * source amount before submitting on-chain.\n *\n * Reads the live balance via RPC rather than the cached state so it reflects\n * any concurrent spends. Throws fast with a clear error instead of letting\n * the on-chain transaction revert.\n *\n * @param quote - Server quote containing the required source amount.\n * @param messenger - Controller messenger.\n */\nasync function validateSourceBalance(\n quote: TransactionPayQuote<ServerQuote>,\n messenger: TransactionPayControllerMessenger,\n): Promise<void> {\n const { from, sourceChainId, sourceTokenAddress } = quote.request;\n\n const normalizedSourceTokenAddress = normalizeTokenAddress(\n sourceTokenAddress,\n sourceChainId,\n TokenAddressTarget.MetaMask,\n );\n\n let currentBalance: string;\n\n try {\n currentBalance = await getLiveTokenBalance(\n messenger,\n from,\n sourceChainId,\n normalizedSourceTokenAddress,\n );\n } catch (error) {\n throw new Error(\n `Cannot validate payment token balance - ${(error as Error).message}`,\n );\n }\n\n const requiredAmount = new BigNumber(quote.sourceAmount.raw);\n const balance = new BigNumber(currentBalance);\n\n log('Validating source balance', {\n from,\n sourceChainId,\n sourceTokenAddress,\n currentBalance,\n requiredAmount: requiredAmount.toString(10),\n });\n\n if (balance.isLessThan(requiredAmount)) {\n throw new Error(\n `Insufficient source token balance for server deposit. ` +\n `Required: ${requiredAmount.toString(10)}, ` +\n `Available: ${balance.toString(10)}`,\n );\n }\n}\n\nasync function submitViaServerExecute(\n quote: TransactionPayQuote<ServerQuote>,\n allParams: TransactionParams[],\n messenger: TransactionPayControllerMessenger,\n transaction: TransactionMeta,\n): Promise<void> {\n const { from, sourceChainId } = quote.request;\n const networkClientId = getNetworkClientId(messenger, sourceChainId);\n\n const nestedTransactions = allParams.map((params) => ({\n data: (params.data ?? '0x') as Hex,\n to: params.to as Hex,\n value: (params.value ?? '0x0') as Hex,\n }));\n\n const sourceCallTransaction = {\n ...transaction,\n chainId: sourceChainId,\n networkClientId,\n nestedTransactions,\n txParams: {\n ...transaction.txParams,\n from,\n },\n } as TransactionMeta;\n\n const delegation = await messenger.call(\n 'TransactionPayController:getDelegationTransaction',\n { transaction: sourceCallTransaction },\n );\n\n log('Delegation result for server source calls', delegation);\n\n const submitBody: ServerSubmitRequest = {\n provider: quote.original.provider,\n id: quote.original.id,\n chainId: Number(sourceChainId),\n to: delegation.to,\n data: delegation.data,\n value: new BigNumber(delegation.value).toFixed(),\n ...(delegation.authorizationList?.length\n ? {\n authorizationList: delegation.authorizationList.map((auth) => ({\n chainId: Number(auth.chainId),\n address: auth.address,\n nonce: Number(auth.nonce),\n yParity: Number(auth.yParity),\n r: auth.r as Hex,\n s: auth.s as Hex,\n })),\n }\n : {}),\n };\n\n const submitResponse = await submitServerIntent(messenger, submitBody);\n\n if (!submitResponse.success) {\n throw new Error(\n `Server submit failed: ${submitResponse.error ?? 'unknown'}`,\n );\n }\n}\n\nasync function submitViaTransactionController(\n quote: TransactionPayQuote<ServerQuote>,\n allParams: TransactionParams[],\n messenger: TransactionPayControllerMessenger,\n transaction: TransactionMeta,\n): Promise<void> {\n const { from, sourceChainId, sourceTokenAddress } = quote.request;\n const { gasLimits, is7702 } = quote.original.client;\n\n const networkClientId = getNetworkClientId(messenger, sourceChainId);\n const gasFeeToken = quote.fees.isSourceGasFeeToken\n ? sourceTokenAddress\n : undefined;\n\n log('Submitting via TransactionController', {\n from,\n gasFeeToken,\n is7702,\n networkClientId,\n paramCount: allParams.length,\n sourceChainId,\n });\n\n const transactionIds: string[] = [];\n const { end } = collectTransactionIds(\n sourceChainId,\n from,\n messenger,\n (transactionId) => {\n transactionIds.push(transactionId);\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Add required transaction ID from server submission',\n },\n (tx) => {\n tx.requiredTransactionIds ??= [];\n tx.requiredTransactionIds.push(transactionId);\n },\n );\n },\n );\n\n try {\n if (allParams.length === 1) {\n const addTransactionOptions = {\n gasFeeToken,\n isInternal: true,\n networkClientId,\n origin: ORIGIN_METAMASK,\n requireApproval: false,\n };\n\n log('Calling addTransaction', {\n params: allParams[0],\n options: addTransactionOptions,\n });\n\n await messenger.call(\n 'TransactionController:addTransaction',\n allParams[0],\n addTransactionOptions,\n );\n } else {\n const gasLimit7702 = is7702 ? toHex(gasLimits[0]) : undefined;\n\n const batchTransactions = allParams.map((params) => {\n // params.gas was already resolved correctly by transactionStepToParams\n // (indexed by relay-step position), so use it directly. Indexing\n // allParams position into gasLimits would be wrong when payment-\n // override or post-quote params are prepended.\n const gas = (gasLimit7702 ?? params.gas) as Hex | undefined;\n\n return {\n params: {\n data: params.data as Hex,\n gas,\n maxFeePerGas: params.maxFeePerGas as Hex,\n maxPriorityFeePerGas: params.maxPriorityFeePerGas as Hex,\n to: params.to as Hex,\n value: params.value as Hex,\n },\n type: params.type as TransactionType | undefined,\n };\n });\n\n const addTransactionBatchOptions = {\n from,\n ...(gasLimit7702 === undefined\n ? { disable7702: true }\n : {\n disable7702: false,\n disableHook: true,\n disableSequential: true,\n gasLimit7702,\n }),\n gasFeeToken,\n isInternal: true,\n networkClientId,\n origin: ORIGIN_METAMASK,\n overwriteUpgrade: true,\n requireApproval: false,\n transactions: batchTransactions,\n };\n\n log('Calling addTransactionBatch', addTransactionBatchOptions);\n\n await messenger.call(\n 'TransactionController:addTransactionBatch',\n addTransactionBatchOptions,\n );\n }\n } finally {\n end();\n }\n\n log('Server transactions added', transactionIds);\n\n await Promise.all(\n transactionIds.map((txId) => waitForTransactionConfirmed(txId, messenger)),\n );\n\n log('Server transactions confirmed', transactionIds);\n\n const lastId = transactionIds.at(-1);\n const sourceHash = lastId\n ? getTransaction(lastId, messenger)?.hash\n : undefined;\n\n if (sourceHash) {\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Add source hash from server transaction submission',\n },\n (tx) => {\n tx.metamaskPay ??= {};\n tx.metamaskPay.sourceHash = sourceHash as Hex;\n },\n );\n }\n}\n\nasync function submitSignatureStep(\n step: ServerSignatureStep,\n from: Hex,\n messenger: TransactionPayControllerMessenger,\n): Promise<void> {\n const { sign, post } = step;\n\n const typedData = {\n domain: sign.domain,\n types: {\n ...sign.types,\n EIP712Domain: deriveEIP712DomainType(sign.domain),\n },\n primaryType: sign.primaryType,\n message: sign.value,\n };\n\n log('Signing typed data for signature step', {\n primaryType: sign.primaryType,\n });\n\n const signature = await messenger.call(\n 'KeyringController:signTypedMessage',\n { from, data: JSON.stringify(typedData) },\n SignTypedDataVersion.V4,\n );\n\n await postSignatureStepResult(\n post.endpoint,\n post.method,\n post.body,\n signature,\n post.signatureFormat,\n );\n}\n\nasync function postSignatureStepResult(\n endpoint: string,\n method: string,\n body: Record<string, unknown>,\n signature: string,\n signatureFormat: 'queryParam' | 'rsv',\n): Promise<void> {\n let url = endpoint;\n let postBody: Record<string, unknown>;\n\n if (signatureFormat === 'queryParam') {\n url = `${endpoint}?signature=${signature}`;\n postBody = body;\n } else {\n // eslint-disable-next-line id-length\n const r = signature.slice(0, 66);\n // eslint-disable-next-line id-length\n const s = `0x${signature.slice(66, 130)}`;\n // eslint-disable-next-line id-length\n const v = parseInt(signature.slice(130, 132), 16);\n postBody = { ...body, signature: { r, s, v } };\n }\n\n log('Posting signature step result', { url, signatureFormat });\n\n let result: unknown;\n\n try {\n const response = await successfulFetch(url, {\n method,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(postBody),\n });\n\n result = await response.json();\n } catch (error) {\n throw new Error(`Signature step POST failed: ${(error as Error).message}`);\n }\n\n log('Signature step POST response', result);\n\n // For rsv-format steps (HyperLiquid exchange endpoint) the response body\n // carries an explicit status field. Validate it here so a failed deposit\n // throws immediately rather than silently proceeding to the polling phase.\n if (signatureFormat === 'rsv') {\n const status = (result as { status?: string })?.status;\n\n if (status !== 'ok') {\n throw new Error(\n `Signature step rejected by server: ${JSON.stringify(result)}`,\n );\n }\n }\n}\n\nfunction deriveEIP712DomainType(\n domain: Record<string, unknown>,\n): { name: string; type: string }[] {\n return Object.keys(DOMAIN_FIELD_MAP)\n .filter((key) => Object.prototype.hasOwnProperty.call(domain, key))\n .map((key) => DOMAIN_FIELD_MAP[key]);\n}\n\nasync function waitForServerCompletion(\n quote: ServerQuote,\n messenger: TransactionPayControllerMessenger,\n transactionId: string,\n): Promise<Hex | undefined> {\n const pollingInterval = getServerPollingInterval(messenger);\n const pollingTimeout = getServerPollingTimeout(messenger);\n const hasTimeout = pollingTimeout !== undefined && pollingTimeout > 0;\n\n log('Server polling config', { pollingInterval, pollingTimeout });\n\n const startTime = Date.now();\n\n let lastStatus: string | undefined;\n let sourceHashEmitted = false;\n\n while (true) {\n let statusResponse: ServerStatusResponse | undefined;\n\n try {\n const tx = getTransaction(transactionId, messenger);\n\n statusResponse = await getServerStatus(messenger, {\n provider: quote.provider,\n id: quote.id,\n hash: tx?.metamaskPay?.sourceHash ?? tx?.hash,\n });\n } catch (error) {\n log('Polling network error', error);\n }\n\n if (statusResponse) {\n lastStatus = statusResponse.status;\n log('Polled status', statusResponse.status, statusResponse);\n\n if (!sourceHashEmitted && statusResponse.sourceHash) {\n sourceHashEmitted = true;\n const { sourceHash } = statusResponse;\n\n updateTransaction(\n {\n transactionId,\n messenger,\n note: 'Add source hash from server status',\n },\n (tx) => {\n tx.metamaskPay ??= {};\n tx.metamaskPay.sourceHash = sourceHash;\n },\n );\n }\n\n if (statusResponse.status === ServerStatus.Confirmed) {\n return statusResponse.targetHash ?? '0x';\n }\n\n if (\n statusResponse.status === ServerStatus.Failed ||\n statusResponse.status === ServerStatus.Refunded\n ) {\n throw new Error(`Server intent ${statusResponse.status.toLowerCase()}`);\n }\n }\n\n if (hasTimeout && Date.now() - startTime >= pollingTimeout) {\n const statusDetail = lastStatus ? ` (last status: ${lastStatus})` : '';\n throw new Error(`Server polling timed out${statusDetail}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollingInterval));\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../../src/strategy/server/types.ts"],"names":[],"mappings":";;;AAEA,0DAA0D;AAC1D,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,uCAAiB,CAAA;AACnB,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B;AAED,4CAA4C;AAC5C,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,6CAA0B,CAAA;IAC1B,qDAAkC,CAAA;AACpC,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AA+GD,6CAA6C;AAC7C,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;AACrB,CAAC,EAPW,YAAY,4BAAZ,YAAY,QAOvB","sourcesContent":["import type { Hex } from '@metamask/utils';\n\n/** Provider names supported by the server intents API. */\nexport enum ServerProviderName {\n Relay = 'relay',\n Across = 'across',\n}\n\n/** Trade type for server quote requests. */\nexport enum ServerTradeType {\n ExactInput = 'EXACT_INPUT',\n ExpectedOutput = 'EXPECTED_OUTPUT',\n}\n\n/** Token amount with chain and token context. */\nexport type ServerQuoteAmount = {\n chainId: number;\n token: string;\n decimals: number;\n raw: string;\n formatted: string;\n};\n\n/** A single on-chain step returned by the server quote endpoint. */\nexport type ServerQuoteStep = {\n chainId: number;\n to: Hex;\n data: Hex;\n value: string;\n gasLimit?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n};\n\n/** A call to include in the quote request (for delegation flows). */\nexport type ServerCall = {\n to: Hex;\n data: Hex;\n value: Hex;\n};\n\n/** EIP-7702 authorization entry for quote and submit requests. */\nexport type ServerAuthorization = {\n address: Hex;\n chainId: number;\n nonce: number;\n r: Hex;\n s: Hex;\n yParity: number;\n};\n\n/** Request body for POST /quote. */\nexport type ServerQuoteRequest = {\n source: { chainId: number; token: Hex };\n target: { chainId: number; token: Hex };\n amount: string;\n tradeType: ServerTradeType;\n sender: Hex;\n recipient: Hex;\n refundTo?: Hex;\n slippage?: number;\n providers?: ServerProviderName[];\n calls?: ServerCall[];\n authorizationList?: ServerAuthorization[];\n supportsGasless?: boolean;\n};\n\n/** Error detail from a rejected quote result. */\nexport type ServerQuoteError = {\n code?: string;\n message: string;\n};\n\n/** A successful quote payload nested inside a ServerQuoteResult. */\nexport type ServerQuotePayload = {\n id: string;\n input: ServerQuoteAmount;\n output: ServerQuoteAmount;\n fees: ServerQuoteFees;\n duration: number;\n steps: ServerQuoteStep[];\n gasless: boolean;\n};\n\n/** Fee breakdown from a quote. */\nexport type ServerQuoteFees = {\n metamask: string;\n provider: string;\n subsidized: boolean;\n};\n\n/** A single provider result within the quote response. */\nexport type ServerQuoteResult = {\n provider: ServerProviderName;\n quote?: ServerQuotePayload;\n error?: ServerQuoteError;\n};\n\n/** Response body from POST /quote. */\nexport type ServerQuoteResponse = {\n results: ServerQuoteResult[];\n};\n\nexport type ServerQuoteClient = {\n gasLimits: number[];\n is7702: boolean;\n maxFeePerGas: string | undefined;\n maxPriorityFeePerGas: string | undefined;\n};\n\n/** Normalized server quote stored in TransactionPayQuote.original. */\nexport type ServerQuote = {\n id: string;\n provider: ServerProviderName;\n input: ServerQuoteAmount;\n output: ServerQuoteAmount;\n fees: ServerQuoteFees;\n duration: number;\n client: ServerQuoteClient;\n steps: ServerQuoteStep[];\n gasless: boolean;\n};\n\n/** Status values returned by GET /status. */\nexport enum ServerStatus {\n Pending = 'PENDING',\n Submitted = 'SUBMITTED',\n Confirmed = 'CONFIRMED',\n Failed = 'FAILED',\n Refunded = 'REFUNDED',\n Unknown = 'UNKNOWN',\n}\n\n/** Response body from GET /status. */\nexport type ServerStatusResponse = {\n status: ServerStatus;\n sourceHash?: Hex;\n targetHash?: Hex;\n error?: string;\n};\n\n/** Request body for POST /submit. */\nexport type ServerSubmitRequest = {\n provider: ServerProviderName;\n id: string;\n chainId: number;\n to: Hex;\n data: Hex;\n value: string;\n authorizationList?: {\n chainId: number;\n address: Hex;\n nonce: number;\n yParity: number;\n r: Hex;\n s: Hex;\n }[];\n};\n\n/** Response body from POST /submit. */\nexport type ServerSubmitResponse = {\n success: boolean;\n error?: string;\n};\n"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../../src/strategy/server/types.ts"],"names":[],"mappings":";;;AAEA,0DAA0D;AAC1D,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,uCAAiB,CAAA;AACnB,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B;AAED,4CAA4C;AAC5C,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,6CAA0B,CAAA;IAC1B,qDAAkC,CAAA;AACpC,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAiID,6CAA6C;AAC7C,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;AACrB,CAAC,EAPW,YAAY,4BAAZ,YAAY,QAOvB","sourcesContent":["import type { Hex } from '@metamask/utils';\n\n/** Provider names supported by the server intents API. */\nexport enum ServerProviderName {\n Relay = 'relay',\n Across = 'across',\n}\n\n/** Trade type for server quote requests. */\nexport enum ServerTradeType {\n ExactInput = 'EXACT_INPUT',\n ExpectedOutput = 'EXPECTED_OUTPUT',\n}\n\n/** Token amount with chain and token context. */\nexport type ServerQuoteAmount = {\n chainId: number;\n token: string;\n decimals: number;\n raw: string;\n formatted: string;\n};\n\nexport type ServerTransactionStep = {\n type: 'transaction';\n chainId: number;\n to: Hex;\n data: Hex;\n value: string;\n gasLimit?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n};\n\nexport type ServerSignatureStep = {\n type: 'signature';\n sign: {\n domain: Record<string, unknown>;\n types: Record<string, unknown>;\n primaryType: string;\n value: Record<string, unknown>;\n };\n post: {\n endpoint: string;\n method: string;\n body: Record<string, unknown>;\n signatureFormat: 'queryParam' | 'rsv';\n };\n};\n\nexport type ServerStep = ServerTransactionStep | ServerSignatureStep;\n\n/** A call to include in the quote request (for delegation flows). */\nexport type ServerCall = {\n to: Hex;\n data: Hex;\n value: Hex;\n};\n\n/** EIP-7702 authorization entry for quote and submit requests. */\nexport type ServerAuthorization = {\n address: Hex;\n chainId: number;\n nonce: number;\n r: Hex;\n s: Hex;\n yParity: number;\n};\n\n/** Request body for POST /quote. */\nexport type ServerQuoteRequest = {\n source: { chainId: number; token: Hex };\n target: { chainId: number; token: Hex };\n amount: string;\n tradeType: ServerTradeType;\n sender: Hex;\n recipient: Hex;\n refundTo?: Hex;\n slippage?: number;\n providers?: ServerProviderName[];\n calls?: ServerCall[];\n authorizationList?: ServerAuthorization[];\n supportsGasless?: boolean;\n};\n\n/** Error detail from a rejected quote result. */\nexport type ServerQuoteError = {\n code?: string;\n message: string;\n};\n\n/** A successful quote payload nested inside a ServerQuoteResult. */\nexport type ServerQuotePayload = {\n id: string;\n input: ServerQuoteAmount;\n output: ServerQuoteAmount;\n fees: ServerQuoteFees;\n duration: number;\n steps: ServerStep[];\n gasless: boolean;\n};\n\n/** Fee breakdown from a quote. */\nexport type ServerQuoteFees = {\n metamask: string;\n provider: string;\n subsidized: boolean;\n};\n\n/** A single provider result within the quote response. */\nexport type ServerQuoteResult = {\n provider: ServerProviderName;\n quote?: ServerQuotePayload;\n error?: ServerQuoteError;\n};\n\n/** Response body from POST /quote. */\nexport type ServerQuoteResponse = {\n results: ServerQuoteResult[];\n};\n\nexport type ServerQuoteClient = {\n gasLimits: number[];\n is7702: boolean;\n maxFeePerGas: string | undefined;\n maxPriorityFeePerGas: string | undefined;\n};\n\n/** Normalized server quote stored in TransactionPayQuote.original. */\nexport type ServerQuote = {\n id: string;\n provider: ServerProviderName;\n input: ServerQuoteAmount;\n output: ServerQuoteAmount;\n fees: ServerQuoteFees;\n duration: number;\n client: ServerQuoteClient;\n steps: ServerStep[];\n gasless: boolean;\n};\n\n/** Status values returned by GET /status. */\nexport enum ServerStatus {\n Pending = 'PENDING',\n Submitted = 'SUBMITTED',\n Confirmed = 'CONFIRMED',\n Failed = 'FAILED',\n Refunded = 'REFUNDED',\n Unknown = 'UNKNOWN',\n}\n\n/** Response body from GET /status. */\nexport type ServerStatusResponse = {\n status: ServerStatus;\n sourceHash?: Hex;\n targetHash?: Hex;\n error?: string;\n};\n\n/** Request body for POST /submit. */\nexport type ServerSubmitRequest = {\n provider: ServerProviderName;\n id: string;\n chainId: number;\n to: Hex;\n data: Hex;\n value: string;\n authorizationList?: {\n chainId: number;\n address: Hex;\n nonce: number;\n yParity: number;\n r: Hex;\n s: Hex;\n }[];\n};\n\n/** Response body from POST /submit. */\nexport type ServerSubmitResponse = {\n success: boolean;\n error?: string;\n};\n"]}
@@ -17,8 +17,8 @@ export type ServerQuoteAmount = {
17
17
  raw: string;
18
18
  formatted: string;
19
19
  };
20
- /** A single on-chain step returned by the server quote endpoint. */
21
- export type ServerQuoteStep = {
20
+ export type ServerTransactionStep = {
21
+ type: 'transaction';
22
22
  chainId: number;
23
23
  to: Hex;
24
24
  data: Hex;
@@ -27,6 +27,22 @@ export type ServerQuoteStep = {
27
27
  maxFeePerGas?: string;
28
28
  maxPriorityFeePerGas?: string;
29
29
  };
30
+ export type ServerSignatureStep = {
31
+ type: 'signature';
32
+ sign: {
33
+ domain: Record<string, unknown>;
34
+ types: Record<string, unknown>;
35
+ primaryType: string;
36
+ value: Record<string, unknown>;
37
+ };
38
+ post: {
39
+ endpoint: string;
40
+ method: string;
41
+ body: Record<string, unknown>;
42
+ signatureFormat: 'queryParam' | 'rsv';
43
+ };
44
+ };
45
+ export type ServerStep = ServerTransactionStep | ServerSignatureStep;
30
46
  /** A call to include in the quote request (for delegation flows). */
31
47
  export type ServerCall = {
32
48
  to: Hex;
@@ -75,7 +91,7 @@ export type ServerQuotePayload = {
75
91
  output: ServerQuoteAmount;
76
92
  fees: ServerQuoteFees;
77
93
  duration: number;
78
- steps: ServerQuoteStep[];
94
+ steps: ServerStep[];
79
95
  gasless: boolean;
80
96
  };
81
97
  /** Fee breakdown from a quote. */
@@ -109,7 +125,7 @@ export type ServerQuote = {
109
125
  fees: ServerQuoteFees;
110
126
  duration: number;
111
127
  client: ServerQuoteClient;
112
- steps: ServerQuoteStep[];
128
+ steps: ServerStep[];
113
129
  gasless: boolean;
114
130
  };
115
131
  /** Status values returned by GET /status. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/strategy/server/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/strategy/server/types.ts"],"names":[],"mappings":"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"}
@@ -17,8 +17,8 @@ export type ServerQuoteAmount = {
17
17
  raw: string;
18
18
  formatted: string;
19
19
  };
20
- /** A single on-chain step returned by the server quote endpoint. */
21
- export type ServerQuoteStep = {
20
+ export type ServerTransactionStep = {
21
+ type: 'transaction';
22
22
  chainId: number;
23
23
  to: Hex;
24
24
  data: Hex;
@@ -27,6 +27,22 @@ export type ServerQuoteStep = {
27
27
  maxFeePerGas?: string;
28
28
  maxPriorityFeePerGas?: string;
29
29
  };
30
+ export type ServerSignatureStep = {
31
+ type: 'signature';
32
+ sign: {
33
+ domain: Record<string, unknown>;
34
+ types: Record<string, unknown>;
35
+ primaryType: string;
36
+ value: Record<string, unknown>;
37
+ };
38
+ post: {
39
+ endpoint: string;
40
+ method: string;
41
+ body: Record<string, unknown>;
42
+ signatureFormat: 'queryParam' | 'rsv';
43
+ };
44
+ };
45
+ export type ServerStep = ServerTransactionStep | ServerSignatureStep;
30
46
  /** A call to include in the quote request (for delegation flows). */
31
47
  export type ServerCall = {
32
48
  to: Hex;
@@ -75,7 +91,7 @@ export type ServerQuotePayload = {
75
91
  output: ServerQuoteAmount;
76
92
  fees: ServerQuoteFees;
77
93
  duration: number;
78
- steps: ServerQuoteStep[];
94
+ steps: ServerStep[];
79
95
  gasless: boolean;
80
96
  };
81
97
  /** Fee breakdown from a quote. */
@@ -109,7 +125,7 @@ export type ServerQuote = {
109
125
  fees: ServerQuoteFees;
110
126
  duration: number;
111
127
  client: ServerQuoteClient;
112
- steps: ServerQuoteStep[];
128
+ steps: ServerStep[];
113
129
  gasless: boolean;
114
130
  };
115
131
  /** Status values returned by GET /status. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/strategy/server/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/strategy/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,0DAA0D;AAC1D,oBAAY,kBAAkB;IAC5B,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,4CAA4C;AAC5C,oBAAY,eAAe;IACzB,UAAU,gBAAgB;IAC1B,cAAc,oBAAoB;CACnC;AAED,iDAAiD;AACjD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,GAAG,CAAC;IACR,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,CAAC;IACF,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,eAAe,EAAE,YAAY,GAAG,KAAK,CAAC;KACvC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,qBAAqB,GAAG,mBAAmB,CAAC;AAErE,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,GAAG,CAAC;IACR,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,GAAG,CAAC;IACP,CAAC,EAAE,GAAG,CAAC;IACP,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oCAAoC;AACpC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC;IACxC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,iDAAiD;AACjD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,6CAA6C;AAC7C,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED,sCAAsC;AACtC,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qCAAqC;AACrC,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,GAAG,CAAC;IACR,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,GAAG,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,CAAC,EAAE,GAAG,CAAC;QACP,CAAC,EAAE,GAAG,CAAC;KACR,EAAE,CAAC;CACL,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../../src/strategy/server/types.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,uCAAiB,CAAA;AACnB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAED,4CAA4C;AAC5C,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,6CAA0B,CAAA;IAC1B,qDAAkC,CAAA;AACpC,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AA+GD,6CAA6C;AAC7C,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;AACrB,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB","sourcesContent":["import type { Hex } from '@metamask/utils';\n\n/** Provider names supported by the server intents API. */\nexport enum ServerProviderName {\n Relay = 'relay',\n Across = 'across',\n}\n\n/** Trade type for server quote requests. */\nexport enum ServerTradeType {\n ExactInput = 'EXACT_INPUT',\n ExpectedOutput = 'EXPECTED_OUTPUT',\n}\n\n/** Token amount with chain and token context. */\nexport type ServerQuoteAmount = {\n chainId: number;\n token: string;\n decimals: number;\n raw: string;\n formatted: string;\n};\n\n/** A single on-chain step returned by the server quote endpoint. */\nexport type ServerQuoteStep = {\n chainId: number;\n to: Hex;\n data: Hex;\n value: string;\n gasLimit?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n};\n\n/** A call to include in the quote request (for delegation flows). */\nexport type ServerCall = {\n to: Hex;\n data: Hex;\n value: Hex;\n};\n\n/** EIP-7702 authorization entry for quote and submit requests. */\nexport type ServerAuthorization = {\n address: Hex;\n chainId: number;\n nonce: number;\n r: Hex;\n s: Hex;\n yParity: number;\n};\n\n/** Request body for POST /quote. */\nexport type ServerQuoteRequest = {\n source: { chainId: number; token: Hex };\n target: { chainId: number; token: Hex };\n amount: string;\n tradeType: ServerTradeType;\n sender: Hex;\n recipient: Hex;\n refundTo?: Hex;\n slippage?: number;\n providers?: ServerProviderName[];\n calls?: ServerCall[];\n authorizationList?: ServerAuthorization[];\n supportsGasless?: boolean;\n};\n\n/** Error detail from a rejected quote result. */\nexport type ServerQuoteError = {\n code?: string;\n message: string;\n};\n\n/** A successful quote payload nested inside a ServerQuoteResult. */\nexport type ServerQuotePayload = {\n id: string;\n input: ServerQuoteAmount;\n output: ServerQuoteAmount;\n fees: ServerQuoteFees;\n duration: number;\n steps: ServerQuoteStep[];\n gasless: boolean;\n};\n\n/** Fee breakdown from a quote. */\nexport type ServerQuoteFees = {\n metamask: string;\n provider: string;\n subsidized: boolean;\n};\n\n/** A single provider result within the quote response. */\nexport type ServerQuoteResult = {\n provider: ServerProviderName;\n quote?: ServerQuotePayload;\n error?: ServerQuoteError;\n};\n\n/** Response body from POST /quote. */\nexport type ServerQuoteResponse = {\n results: ServerQuoteResult[];\n};\n\nexport type ServerQuoteClient = {\n gasLimits: number[];\n is7702: boolean;\n maxFeePerGas: string | undefined;\n maxPriorityFeePerGas: string | undefined;\n};\n\n/** Normalized server quote stored in TransactionPayQuote.original. */\nexport type ServerQuote = {\n id: string;\n provider: ServerProviderName;\n input: ServerQuoteAmount;\n output: ServerQuoteAmount;\n fees: ServerQuoteFees;\n duration: number;\n client: ServerQuoteClient;\n steps: ServerQuoteStep[];\n gasless: boolean;\n};\n\n/** Status values returned by GET /status. */\nexport enum ServerStatus {\n Pending = 'PENDING',\n Submitted = 'SUBMITTED',\n Confirmed = 'CONFIRMED',\n Failed = 'FAILED',\n Refunded = 'REFUNDED',\n Unknown = 'UNKNOWN',\n}\n\n/** Response body from GET /status. */\nexport type ServerStatusResponse = {\n status: ServerStatus;\n sourceHash?: Hex;\n targetHash?: Hex;\n error?: string;\n};\n\n/** Request body for POST /submit. */\nexport type ServerSubmitRequest = {\n provider: ServerProviderName;\n id: string;\n chainId: number;\n to: Hex;\n data: Hex;\n value: string;\n authorizationList?: {\n chainId: number;\n address: Hex;\n nonce: number;\n yParity: number;\n r: Hex;\n s: Hex;\n }[];\n};\n\n/** Response body from POST /submit. */\nexport type ServerSubmitResponse = {\n success: boolean;\n error?: string;\n};\n"]}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../../src/strategy/server/types.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,uCAAiB,CAAA;AACnB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAED,4CAA4C;AAC5C,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,6CAA0B,CAAA;IAC1B,qDAAkC,CAAA;AACpC,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAiID,6CAA6C;AAC7C,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;AACrB,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB","sourcesContent":["import type { Hex } from '@metamask/utils';\n\n/** Provider names supported by the server intents API. */\nexport enum ServerProviderName {\n Relay = 'relay',\n Across = 'across',\n}\n\n/** Trade type for server quote requests. */\nexport enum ServerTradeType {\n ExactInput = 'EXACT_INPUT',\n ExpectedOutput = 'EXPECTED_OUTPUT',\n}\n\n/** Token amount with chain and token context. */\nexport type ServerQuoteAmount = {\n chainId: number;\n token: string;\n decimals: number;\n raw: string;\n formatted: string;\n};\n\nexport type ServerTransactionStep = {\n type: 'transaction';\n chainId: number;\n to: Hex;\n data: Hex;\n value: string;\n gasLimit?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n};\n\nexport type ServerSignatureStep = {\n type: 'signature';\n sign: {\n domain: Record<string, unknown>;\n types: Record<string, unknown>;\n primaryType: string;\n value: Record<string, unknown>;\n };\n post: {\n endpoint: string;\n method: string;\n body: Record<string, unknown>;\n signatureFormat: 'queryParam' | 'rsv';\n };\n};\n\nexport type ServerStep = ServerTransactionStep | ServerSignatureStep;\n\n/** A call to include in the quote request (for delegation flows). */\nexport type ServerCall = {\n to: Hex;\n data: Hex;\n value: Hex;\n};\n\n/** EIP-7702 authorization entry for quote and submit requests. */\nexport type ServerAuthorization = {\n address: Hex;\n chainId: number;\n nonce: number;\n r: Hex;\n s: Hex;\n yParity: number;\n};\n\n/** Request body for POST /quote. */\nexport type ServerQuoteRequest = {\n source: { chainId: number; token: Hex };\n target: { chainId: number; token: Hex };\n amount: string;\n tradeType: ServerTradeType;\n sender: Hex;\n recipient: Hex;\n refundTo?: Hex;\n slippage?: number;\n providers?: ServerProviderName[];\n calls?: ServerCall[];\n authorizationList?: ServerAuthorization[];\n supportsGasless?: boolean;\n};\n\n/** Error detail from a rejected quote result. */\nexport type ServerQuoteError = {\n code?: string;\n message: string;\n};\n\n/** A successful quote payload nested inside a ServerQuoteResult. */\nexport type ServerQuotePayload = {\n id: string;\n input: ServerQuoteAmount;\n output: ServerQuoteAmount;\n fees: ServerQuoteFees;\n duration: number;\n steps: ServerStep[];\n gasless: boolean;\n};\n\n/** Fee breakdown from a quote. */\nexport type ServerQuoteFees = {\n metamask: string;\n provider: string;\n subsidized: boolean;\n};\n\n/** A single provider result within the quote response. */\nexport type ServerQuoteResult = {\n provider: ServerProviderName;\n quote?: ServerQuotePayload;\n error?: ServerQuoteError;\n};\n\n/** Response body from POST /quote. */\nexport type ServerQuoteResponse = {\n results: ServerQuoteResult[];\n};\n\nexport type ServerQuoteClient = {\n gasLimits: number[];\n is7702: boolean;\n maxFeePerGas: string | undefined;\n maxPriorityFeePerGas: string | undefined;\n};\n\n/** Normalized server quote stored in TransactionPayQuote.original. */\nexport type ServerQuote = {\n id: string;\n provider: ServerProviderName;\n input: ServerQuoteAmount;\n output: ServerQuoteAmount;\n fees: ServerQuoteFees;\n duration: number;\n client: ServerQuoteClient;\n steps: ServerStep[];\n gasless: boolean;\n};\n\n/** Status values returned by GET /status. */\nexport enum ServerStatus {\n Pending = 'PENDING',\n Submitted = 'SUBMITTED',\n Confirmed = 'CONFIRMED',\n Failed = 'FAILED',\n Refunded = 'REFUNDED',\n Unknown = 'UNKNOWN',\n}\n\n/** Response body from GET /status. */\nexport type ServerStatusResponse = {\n status: ServerStatus;\n sourceHash?: Hex;\n targetHash?: Hex;\n error?: string;\n};\n\n/** Request body for POST /submit. */\nexport type ServerSubmitRequest = {\n provider: ServerProviderName;\n id: string;\n chainId: number;\n to: Hex;\n data: Hex;\n value: string;\n authorizationList?: {\n chainId: number;\n address: Hex;\n nonce: number;\n yParity: number;\n r: Hex;\n s: Hex;\n }[];\n};\n\n/** Response body from POST /submit. */\nexport type ServerSubmitResponse = {\n success: boolean;\n error?: string;\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isEIP7702Chain = exports.getHyperliquidActivationFeeConfig = exports.getFiatOrderPollTimeoutMs = exports.getFiatOrderPollIntervalMs = exports.getFiatVaultDisabled = exports.getDirectMoneyMusdEnabled = exports.getFiatMaxRateDriftPercent = exports.getFiatFeeReserveMultiplier = exports.getFiatEnabledTypes = exports.getFiatAssetPerTransactionType = exports.getAssetsUnifyStateFeature = exports.getSlippage = exports.getGasBuffer = exports.getFallbackGas = exports.getServerPollingTimeout = exports.getServerPollingInterval = exports.getRelayPollingTimeout = exports.getRelayPollingInterval = exports.getRelayOriginGasOverhead = exports.isChainExcludedFromInfura = exports.isRelayExecuteEnabled = exports.getPayStrategiesConfig = exports.getFeatureFlags = exports.getStrategy = exports.getStrategyOrder = exports.DEFAULT_STRATEGY_ORDER = exports.DEFAULT_SERVER_BASE_URL = exports.DEFAULT_ACROSS_API_BASE = exports.DEFAULT_HYPERLIQUID_ACTIVATION_FEE_USD = exports.DEFAULT_SLIPPAGE = exports.DEFAULT_RELAY_ORIGIN_GAS_OVERHEAD = exports.DEFAULT_RELAY_QUOTE_URL = exports.DEFAULT_RELAY_EXECUTE_URL = exports.DEFAULT_FALLBACK_GAS_MAX = exports.DEFAULT_FALLBACK_GAS_ESTIMATE = exports.DEFAULT_GAS_BUFFER = exports.DEFAULT_ORDER_POLL_TIMEOUT_MS = exports.DEFAULT_ORDER_POLL_INTERVAL_MS = exports.DEFAULT_MAX_RATE_DRIFT_PERCENT = exports.DEFAULT_FEE_RESERVE_MULTIPLIER = void 0;
3
+ exports.isEIP7702Chain = exports.getHyperliquidActivationFeeConfig = exports.getFiatOrderPollTimeoutMs = exports.getFiatOrderPollIntervalMs = exports.getFiatVaultDisabled = exports.getDirectMoneyMusdEnabled = exports.getFiatMaxRateDriftPercent = exports.getFiatFeeReserveMultiplier = exports.getFiatEnabledTypes = exports.getFiatAssetPerTransactionType = exports.getAssetsUnifyStateFeature = exports.getSlippage = exports.getGasBuffer = exports.getFallbackGas = exports.getServerPollingTimeout = exports.getServerPollingInterval = exports.getRelayPollingTimeout = exports.getRelayPollingInterval = exports.getRelayOriginGasOverhead = exports.isChainExcludedFromInfura = exports.isRelayExecuteEnabled = exports.getPayStrategiesConfig = exports.getStablecoins = exports.getFeatureFlags = exports.getStrategy = exports.getStrategyOrder = exports.DEFAULT_STRATEGY_ORDER = exports.DEFAULT_SERVER_BASE_URL = exports.DEFAULT_ACROSS_API_BASE = exports.DEFAULT_HYPERLIQUID_ACTIVATION_FEE_USD = exports.DEFAULT_SLIPPAGE = exports.DEFAULT_RELAY_ORIGIN_GAS_OVERHEAD = exports.DEFAULT_RELAY_QUOTE_URL = exports.DEFAULT_RELAY_EXECUTE_URL = exports.DEFAULT_FALLBACK_GAS_MAX = exports.DEFAULT_FALLBACK_GAS_ESTIMATE = exports.DEFAULT_GAS_BUFFER = exports.DEFAULT_ORDER_POLL_TIMEOUT_MS = exports.DEFAULT_ORDER_POLL_INTERVAL_MS = exports.DEFAULT_MAX_RATE_DRIFT_PERCENT = exports.DEFAULT_FEE_RESERVE_MULTIPLIER = void 0;
4
4
  const utils_1 = require("@metamask/utils");
5
5
  const bignumber_js_1 = require("bignumber.js");
6
6
  const lodash_1 = require("lodash");
@@ -222,6 +222,29 @@ function getFeatureFlags(messenger) {
222
222
  return result;
223
223
  }
224
224
  exports.getFeatureFlags = getFeatureFlags;
225
+ /**
226
+ * Get the stablecoins map from the `stable-tokens` feature flag.
227
+ * Falls back to the hardcoded {@link STABLECOINS} constant when the flag is
228
+ * absent or not a valid object.
229
+ *
230
+ * @param messenger - Controller messenger.
231
+ * @returns Stablecoins keyed by chain ID.
232
+ */
233
+ function getStablecoins(messenger) {
234
+ const state = messenger.call('RemoteFeatureFlagController:getState');
235
+ const flag = state.remoteFeatureFlags?.['stable-tokens'];
236
+ if (flag && typeof flag === 'object' && !Array.isArray(flag)) {
237
+ const raw = flag;
238
+ return Object.entries(raw).reduce((acc, [chainId, addresses]) => {
239
+ if (Array.isArray(addresses)) {
240
+ acc[chainId.toLowerCase()] = addresses.map((a) => a.toLowerCase());
241
+ }
242
+ return acc;
243
+ }, {});
244
+ }
245
+ return constants_1.STABLECOINS;
246
+ }
247
+ exports.getStablecoins = getStablecoins;
225
248
  /**
226
249
  * Get Pay Strategies configuration.
227
250
  *