@seedprotocol/publish 0.6.7 → 0.6.8

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 (255) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +69 -11
  3. package/dist/chainConfig-3sSqEVQh.js +1433 -0
  4. package/dist/chainConfig-3sSqEVQh.js.map +1 -0
  5. package/dist/chainConfig-3wlYarAG.js +1433 -0
  6. package/dist/chainConfig-3wlYarAG.js.map +1 -0
  7. package/dist/chainConfig-BRcsMopd.js +1442 -0
  8. package/dist/chainConfig-BRcsMopd.js.map +1 -0
  9. package/dist/chainConfig-BYm5OXpk.js +1433 -0
  10. package/dist/chainConfig-BYm5OXpk.js.map +1 -0
  11. package/dist/chainConfig-CfVGYAsY.js +1311 -0
  12. package/dist/chainConfig-CfVGYAsY.js.map +1 -0
  13. package/dist/chainConfig-DDA4YmAB.js +1424 -0
  14. package/dist/chainConfig-DDA4YmAB.js.map +1 -0
  15. package/dist/config-CPBd5C_b.js +1201 -0
  16. package/dist/config-CPBd5C_b.js.map +1 -0
  17. package/dist/config-DkIapO94.js +955 -0
  18. package/dist/config-DkIapO94.js.map +1 -0
  19. package/dist/config-EQZZNH9H.js +955 -0
  20. package/dist/config-EQZZNH9H.js.map +1 -0
  21. package/dist/config.d.ts +85 -6
  22. package/dist/config.d.ts.map +1 -1
  23. package/dist/ensureAutomationSessionKey-BMHLKfjj.js +85 -0
  24. package/dist/ensureAutomationSessionKey-BMHLKfjj.js.map +1 -0
  25. package/dist/ensureAutomationSessionKey-BZ9_3FMW.js +86 -0
  26. package/dist/ensureAutomationSessionKey-BZ9_3FMW.js.map +1 -0
  27. package/dist/ensureAutomationSessionKey-C8D7BFjU.js +85 -0
  28. package/dist/ensureAutomationSessionKey-C8D7BFjU.js.map +1 -0
  29. package/dist/ensureAutomationSessionKey-CClLVX2w.js +85 -0
  30. package/dist/ensureAutomationSessionKey-CClLVX2w.js.map +1 -0
  31. package/dist/ensureAutomationSessionKey-CNNN1jBQ.js +85 -0
  32. package/dist/ensureAutomationSessionKey-CNNN1jBQ.js.map +1 -0
  33. package/dist/ensureAutomationSessionKey-D8Gki6U6.js +85 -0
  34. package/dist/ensureAutomationSessionKey-D8Gki6U6.js.map +1 -0
  35. package/dist/ensureAutomationSessionKey-DEH7nwUc.js +86 -0
  36. package/dist/ensureAutomationSessionKey-DEH7nwUc.js.map +1 -0
  37. package/dist/ensureAutomationSessionKey-Dhvbii2M.js +86 -0
  38. package/dist/ensureAutomationSessionKey-Dhvbii2M.js.map +1 -0
  39. package/dist/ensureAutomationSessionKey-Dyfk8qVp.js +85 -0
  40. package/dist/ensureAutomationSessionKey-Dyfk8qVp.js.map +1 -0
  41. package/dist/ensureModularPublishBootstrap-5HJDqJJM.js +24 -0
  42. package/dist/ensureModularPublishBootstrap-5HJDqJJM.js.map +1 -0
  43. package/dist/ensureModularPublishBootstrap-BW8jKN_A.js +24 -0
  44. package/dist/ensureModularPublishBootstrap-BW8jKN_A.js.map +1 -0
  45. package/dist/ensureModularPublishBootstrap-Btih5xbB.js +129 -0
  46. package/dist/ensureModularPublishBootstrap-Btih5xbB.js.map +1 -0
  47. package/dist/ensureModularPublishBootstrap-CI4U08Gc.js +129 -0
  48. package/dist/ensureModularPublishBootstrap-CI4U08Gc.js.map +1 -0
  49. package/dist/ensureModularPublishBootstrap-CcU-hXll.js +128 -0
  50. package/dist/ensureModularPublishBootstrap-CcU-hXll.js.map +1 -0
  51. package/dist/ensureModularPublishBootstrap-CdrykHAi.js +24 -0
  52. package/dist/ensureModularPublishBootstrap-CdrykHAi.js.map +1 -0
  53. package/dist/ensureModularPublishBootstrap-DGBKVGg5.js +24 -0
  54. package/dist/ensureModularPublishBootstrap-DGBKVGg5.js.map +1 -0
  55. package/dist/ensureModularPublishBootstrap-DaREOqSc.js +129 -0
  56. package/dist/ensureModularPublishBootstrap-DaREOqSc.js.map +1 -0
  57. package/dist/ensureModularPublishBootstrap-DxIG-LUP.js +24 -0
  58. package/dist/ensureModularPublishBootstrap-DxIG-LUP.js.map +1 -0
  59. package/dist/ensureSmartWalletThenPublish-BSYzckyS.js +49 -0
  60. package/dist/ensureSmartWalletThenPublish-BSYzckyS.js.map +1 -0
  61. package/dist/ensureSmartWalletThenPublish-Bf8FN1un.js +49 -0
  62. package/dist/ensureSmartWalletThenPublish-Bf8FN1un.js.map +1 -0
  63. package/dist/ensureSmartWalletThenPublish-Bl415Ss6.js +48 -0
  64. package/dist/ensureSmartWalletThenPublish-Bl415Ss6.js.map +1 -0
  65. package/dist/ensureSmartWalletThenPublish-CE7acryB.js +49 -0
  66. package/dist/ensureSmartWalletThenPublish-CE7acryB.js.map +1 -0
  67. package/dist/ensureSmartWalletThenPublish-D5GSZRyZ.js +48 -0
  68. package/dist/ensureSmartWalletThenPublish-D5GSZRyZ.js.map +1 -0
  69. package/dist/ensureSmartWalletThenPublish-DAomriGc.js +48 -0
  70. package/dist/ensureSmartWalletThenPublish-DAomriGc.js.map +1 -0
  71. package/dist/ensureSmartWalletThenPublish-DaZf3q5S.js +48 -0
  72. package/dist/ensureSmartWalletThenPublish-DaZf3q5S.js.map +1 -0
  73. package/dist/ensureSmartWalletThenPublish-ekb0xJRn.js +48 -0
  74. package/dist/ensureSmartWalletThenPublish-ekb0xJRn.js.map +1 -0
  75. package/dist/ensureSmartWalletThenPublish-v5fhvKxZ.js +48 -0
  76. package/dist/ensureSmartWalletThenPublish-v5fhvKxZ.js.map +1 -0
  77. package/dist/errors-Du3LNbJN.js.map +1 -1
  78. package/dist/errors.d.ts +2 -2
  79. package/dist/errors.d.ts.map +1 -1
  80. package/dist/helpers/abi/executor.d.ts +128 -0
  81. package/dist/helpers/abi/executor.d.ts.map +1 -1
  82. package/dist/helpers/abi/factory.d.ts +1 -1
  83. package/dist/helpers/abi/factory.d.ts.map +1 -1
  84. package/dist/helpers/abi/publisher.d.ts +11 -0
  85. package/dist/helpers/abi/publisher.d.ts.map +1 -1
  86. package/dist/helpers/abi/seedErrors.d.ts +141 -0
  87. package/dist/helpers/abi/seedErrors.d.ts.map +1 -0
  88. package/dist/helpers/abi/seedExecutorRouter.d.ts +60 -0
  89. package/dist/helpers/abi/seedExecutorRouter.d.ts.map +1 -0
  90. package/dist/helpers/adapters/permissionlessTxSender.d.ts +26 -0
  91. package/dist/helpers/adapters/permissionlessTxSender.d.ts.map +1 -1
  92. package/dist/helpers/adapters/thirdwebAccount.d.ts +10 -2
  93. package/dist/helpers/adapters/thirdwebAccount.d.ts.map +1 -1
  94. package/dist/helpers/approvedTargetsForAutomationPublish.d.ts +1 -1
  95. package/dist/helpers/blockchain.d.ts +4 -0
  96. package/dist/helpers/blockchain.d.ts.map +1 -1
  97. package/dist/helpers/chainClient.d.ts.map +1 -1
  98. package/dist/helpers/chainConfig.d.ts +2 -0
  99. package/dist/helpers/chainConfig.d.ts.map +1 -1
  100. package/dist/helpers/constants.d.ts +14 -3
  101. package/dist/helpers/constants.d.ts.map +1 -1
  102. package/dist/helpers/contracts/index.d.ts +25 -0
  103. package/dist/helpers/contracts/index.d.ts.map +1 -1
  104. package/dist/helpers/defaultApprovedTargetsForModularPublish.d.ts +12 -2
  105. package/dist/helpers/defaultApprovedTargetsForModularPublish.d.ts.map +1 -1
  106. package/dist/helpers/describeRevert.d.ts +33 -0
  107. package/dist/helpers/describeRevert.d.ts.map +1 -0
  108. package/dist/helpers/easDirect.d.ts +3 -8
  109. package/dist/helpers/easDirect.d.ts.map +1 -1
  110. package/dist/helpers/enrollPublishAutomation.d.ts +6 -2
  111. package/dist/helpers/enrollPublishAutomation.d.ts.map +1 -1
  112. package/dist/helpers/ensureAutomationSessionKey.d.ts.map +1 -1
  113. package/dist/helpers/ensureEip7702ModularAccountReady.d.ts +1 -1
  114. package/dist/helpers/ensureEip7702ModularAccountReady.d.ts.map +1 -1
  115. package/dist/helpers/ensureExecutorModule.d.ts +6 -3
  116. package/dist/helpers/ensureExecutorModule.d.ts.map +1 -1
  117. package/dist/helpers/ensureManagedAccountEasConfigured.d.ts +8 -3
  118. package/dist/helpers/ensureManagedAccountEasConfigured.d.ts.map +1 -1
  119. package/dist/helpers/ensureManagedAccountReady.d.ts.map +1 -1
  120. package/dist/helpers/ensureManagedSignerSessionKey.d.ts +5 -0
  121. package/dist/helpers/ensureManagedSignerSessionKey.d.ts.map +1 -1
  122. package/dist/helpers/ensureModularPublishBootstrap.d.ts +6 -2
  123. package/dist/helpers/ensureModularPublishBootstrap.d.ts.map +1 -1
  124. package/dist/helpers/ensureSmartWalletThenPublish.d.ts.map +1 -1
  125. package/dist/helpers/executorModuleReadiness.d.ts +28 -0
  126. package/dist/helpers/executorModuleReadiness.d.ts.map +1 -0
  127. package/dist/helpers/managedAccountAdmin.d.ts +12 -0
  128. package/dist/helpers/managedAccountAdmin.d.ts.map +1 -0
  129. package/dist/helpers/publishThirdwebClient.d.ts +10 -0
  130. package/dist/helpers/publishThirdwebClient.d.ts.map +1 -0
  131. package/dist/helpers/retryNonceTooLow.d.ts +12 -0
  132. package/dist/helpers/retryNonceTooLow.d.ts.map +1 -0
  133. package/dist/helpers/seedSigner.d.ts.map +1 -1
  134. package/dist/helpers/seedTwin.d.ts +47 -0
  135. package/dist/helpers/seedTwin.d.ts.map +1 -0
  136. package/dist/helpers/thirdweb.d.ts +21 -6
  137. package/dist/helpers/thirdweb.d.ts.map +1 -1
  138. package/dist/helpers/thirdwebChain.d.ts +21 -0
  139. package/dist/helpers/thirdwebChain.d.ts.map +1 -0
  140. package/dist/helpers/verifyPublishChain.d.ts +21 -0
  141. package/dist/helpers/verifyPublishChain.d.ts.map +1 -0
  142. package/dist/hooks/useItemPublishStatus.d.ts +2 -0
  143. package/dist/hooks/useItemPublishStatus.d.ts.map +1 -1
  144. package/dist/index.d.ts +9 -2
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +478 -398
  147. package/dist/index.js.map +1 -1
  148. package/dist/managedAccountAdmin-B64V1rlU.js +29 -0
  149. package/dist/managedAccountAdmin-B64V1rlU.js.map +1 -0
  150. package/dist/managedAccountAdmin-BVLGWpEb.js +29 -0
  151. package/dist/managedAccountAdmin-BVLGWpEb.js.map +1 -0
  152. package/dist/managedAccountAdmin-Bje6X8Ds.js +29 -0
  153. package/dist/managedAccountAdmin-Bje6X8Ds.js.map +1 -0
  154. package/dist/managedAccountAdmin-C84-IlQ9.js +29 -0
  155. package/dist/managedAccountAdmin-C84-IlQ9.js.map +1 -0
  156. package/dist/managedAccountAdmin-DhCRBoPX.js +29 -0
  157. package/dist/managedAccountAdmin-DhCRBoPX.js.map +1 -0
  158. package/dist/publishAuthorization-B0G1em4a.js +3695 -0
  159. package/dist/publishAuthorization-B0G1em4a.js.map +1 -0
  160. package/dist/publishAuthorization-B1BVVfp0.js +3604 -0
  161. package/dist/publishAuthorization-B1BVVfp0.js.map +1 -0
  162. package/dist/publishAuthorization-Bltn3y_K.js +3599 -0
  163. package/dist/publishAuthorization-Bltn3y_K.js.map +1 -0
  164. package/dist/publishAuthorization-By2Tt9kW.js +3912 -0
  165. package/dist/publishAuthorization-By2Tt9kW.js.map +1 -0
  166. package/dist/publishAuthorization-CxBkijU6.js +3925 -0
  167. package/dist/publishAuthorization-CxBkijU6.js.map +1 -0
  168. package/dist/publishAuthorization-CxWY7lAQ.js +3706 -0
  169. package/dist/publishAuthorization-CxWY7lAQ.js.map +1 -0
  170. package/dist/publishAuthorization-DEriY_jm.js +3687 -0
  171. package/dist/publishAuthorization-DEriY_jm.js.map +1 -0
  172. package/dist/publishAuthorization-DfAQs1sN.js +3707 -0
  173. package/dist/publishAuthorization-DfAQs1sN.js.map +1 -0
  174. package/dist/publishAuthorization-DqhhCAhd.js +3652 -0
  175. package/dist/publishAuthorization-DqhhCAhd.js.map +1 -0
  176. package/dist/publishThirdwebClient-BdgkcqM7.js +18 -0
  177. package/dist/publishThirdwebClient-BdgkcqM7.js.map +1 -0
  178. package/dist/publishThirdwebClient-BkmDN480.js +18 -0
  179. package/dist/publishThirdwebClient-BkmDN480.js.map +1 -0
  180. package/dist/publishThirdwebClient-BnDhP3N-.js +18 -0
  181. package/dist/publishThirdwebClient-BnDhP3N-.js.map +1 -0
  182. package/dist/publishThirdwebClient-CQ29pzG2.js +18 -0
  183. package/dist/publishThirdwebClient-CQ29pzG2.js.map +1 -0
  184. package/dist/publishThirdwebClient-CZIVmr9Z.js +18 -0
  185. package/dist/publishThirdwebClient-CZIVmr9Z.js.map +1 -0
  186. package/dist/publishThirdwebClient-DroRrOFQ.js +18 -0
  187. package/dist/publishThirdwebClient-DroRrOFQ.js.map +1 -0
  188. package/dist/publishThirdwebClient-DzXFjQ7L.js +18 -0
  189. package/dist/publishThirdwebClient-DzXFjQ7L.js.map +1 -0
  190. package/dist/publishThirdwebClient-Dzb2vcEs.js +18 -0
  191. package/dist/publishThirdwebClient-Dzb2vcEs.js.map +1 -0
  192. package/dist/publishThirdwebClient-i8P7fivi.js +18 -0
  193. package/dist/publishThirdwebClient-i8P7fivi.js.map +1 -0
  194. package/dist/react/ConnectButton.d.ts.map +1 -1
  195. package/dist/resolveRevokeAccount-B5iXpuRT.js +38 -0
  196. package/dist/resolveRevokeAccount-B5iXpuRT.js.map +1 -0
  197. package/dist/resolveRevokeAccount-B7ImSb4Y.js +38 -0
  198. package/dist/resolveRevokeAccount-B7ImSb4Y.js.map +1 -0
  199. package/dist/resolveRevokeAccount-BM1j2l5Q.js +38 -0
  200. package/dist/resolveRevokeAccount-BM1j2l5Q.js.map +1 -0
  201. package/dist/resolveRevokeAccount-BtVG0xxc.js +38 -0
  202. package/dist/resolveRevokeAccount-BtVG0xxc.js.map +1 -0
  203. package/dist/resolveRevokeAccount-CJZZdBcQ.js +39 -0
  204. package/dist/resolveRevokeAccount-CJZZdBcQ.js.map +1 -0
  205. package/dist/resolveRevokeAccount-CaIMuCee.js +39 -0
  206. package/dist/resolveRevokeAccount-CaIMuCee.js.map +1 -0
  207. package/dist/resolveRevokeAccount-Cg4TQgnd.js +38 -0
  208. package/dist/resolveRevokeAccount-Cg4TQgnd.js.map +1 -0
  209. package/dist/resolveRevokeAccount-DHnxtEIj.js +39 -0
  210. package/dist/resolveRevokeAccount-DHnxtEIj.js.map +1 -0
  211. package/dist/resolveRevokeAccount-S-2WXkNh.js +38 -0
  212. package/dist/resolveRevokeAccount-S-2WXkNh.js.map +1 -0
  213. package/dist/services/publish/actors/checking.d.ts.map +1 -1
  214. package/dist/services/publish/actors/createAttestations.d.ts.map +1 -1
  215. package/dist/services/publish/helpers/ensureEasSchemas.d.ts +12 -1
  216. package/dist/services/publish/helpers/ensureEasSchemas.d.ts.map +1 -1
  217. package/dist/services/publish/helpers/getPublishUploadData.d.ts.map +1 -1
  218. package/dist/services/publishManager/actions/createPublish.d.ts.map +1 -1
  219. package/dist/services/publishManager/actions/drainPendingCreates.d.ts +3 -0
  220. package/dist/services/publishManager/actions/drainPendingCreates.d.ts.map +1 -0
  221. package/dist/services/publishManager/actions/publishDone.d.ts.map +1 -1
  222. package/dist/services/publishManager/actions/queueCreatePublish.d.ts +2 -0
  223. package/dist/services/publishManager/actions/queueCreatePublish.d.ts.map +1 -0
  224. package/dist/services/publishManager/actors/restoreFromDb.d.ts.map +1 -1
  225. package/dist/services/publishManager/actors/savePublish.d.ts +11 -0
  226. package/dist/services/publishManager/actors/savePublish.d.ts.map +1 -1
  227. package/dist/services/publishManager/createPublishResult.d.ts +6 -0
  228. package/dist/services/publishManager/createPublishResult.d.ts.map +1 -0
  229. package/dist/services/publishManager/index.d.ts +61 -1
  230. package/dist/services/publishManager/index.d.ts.map +1 -1
  231. package/dist/services/revoke/revokeAttestations.d.ts +3 -2
  232. package/dist/services/revoke/revokeAttestations.d.ts.map +1 -1
  233. package/dist/thirdweb.d.ts +1 -0
  234. package/dist/thirdweb.d.ts.map +1 -1
  235. package/dist/thirdweb.js +193 -117
  236. package/dist/thirdweb.js.map +1 -1
  237. package/dist/worker-2dUZSapK.js +69 -0
  238. package/dist/worker-2dUZSapK.js.map +1 -0
  239. package/dist/worker-B8gN5WTx.js +69 -0
  240. package/dist/worker-B8gN5WTx.js.map +1 -0
  241. package/dist/worker-BgErCNTb.js +69 -0
  242. package/dist/worker-BgErCNTb.js.map +1 -0
  243. package/dist/worker-C07rPV2G.js +69 -0
  244. package/dist/worker-C07rPV2G.js.map +1 -0
  245. package/dist/worker-C9Za_dlQ.js +69 -0
  246. package/dist/worker-C9Za_dlQ.js.map +1 -0
  247. package/dist/worker-CEgulQnm.js +69 -0
  248. package/dist/worker-CEgulQnm.js.map +1 -0
  249. package/dist/worker-C_TL94He.js +69 -0
  250. package/dist/worker-C_TL94He.js.map +1 -0
  251. package/dist/worker-DypHzXgH.js +69 -0
  252. package/dist/worker-DypHzXgH.js.map +1 -0
  253. package/dist/worker-ZL4Wg19t.js +69 -0
  254. package/dist/worker-ZL4Wg19t.js.map +1 -0
  255. package/package.json +6 -6
@@ -0,0 +1,85 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { X as t, et as n, g as r, nt as i, t as a } from "./chainConfig-CfVGYAsY.js";
3
+ import { r as o } from "./errors-Du3LNbJN.js";
4
+ import { N as s, d as c, p as l } from "./publishAuthorization-DEriY_jm.js";
5
+ import { t as u } from "./publishThirdwebClient-DroRrOFQ.js";
6
+ import { getContract as d, sendTransaction as f } from "thirdweb";
7
+ import { addSessionKey as p, removeSessionKey as m, shouldUpdateSessionKey as h } from "thirdweb/extensions/erc4337";
8
+ //#region src/helpers/ensureAutomationSessionKey.ts
9
+ var g = /* @__PURE__ */ e({
10
+ ensureAutomationSessionKey: () => x,
11
+ isAutomationSessionActive: () => C,
12
+ removeAutomationSessionKey: () => S
13
+ }), _ = () => `Could not connect the managed publishing account to authorize an automation session key on ${a()}. Reconnect and try again.`, v = () => `Could not authorize the automation session key on your publishing account on ${a()}.`, y = () => `Could not remove the automation session key from your publishing account on ${a()}.`;
14
+ async function b(e) {
15
+ let t = s();
16
+ await t.autoConnect({
17
+ client: u(),
18
+ chain: r()
19
+ });
20
+ let n = t.getAccount();
21
+ if (!n) throw new o(_(), "MODULAR_SIGNER_ACTIVATION_FAILED", e);
22
+ return n;
23
+ }
24
+ async function x(e) {
25
+ let { managedAddress: t, sessionKeyAddress: n, expiresAt: a } = e, s = await b(t), m = d({
26
+ client: u(),
27
+ chain: r(),
28
+ address: t
29
+ }), g = l(c({ expiresAt: a })), _ = !1;
30
+ try {
31
+ _ = await h({
32
+ accountContract: m,
33
+ sessionKeyAddress: n,
34
+ newPermissions: g
35
+ });
36
+ } catch (e) {
37
+ throw new o(v(), "MODULAR_SIGNER_ACTIVATION_FAILED", t, e);
38
+ }
39
+ if (_) try {
40
+ let e = p({
41
+ contract: m,
42
+ account: s,
43
+ sessionKeyAddress: n,
44
+ permissions: g
45
+ }), t = await f({
46
+ account: s,
47
+ transaction: e
48
+ });
49
+ await i(t.transactionHash);
50
+ } catch (e) {
51
+ throw new o(v(), "MODULAR_SIGNER_ACTIVATION_FAILED", t, e);
52
+ }
53
+ if (!await C(t, n)) throw new o(v(), "MODULAR_SIGNER_ACTIVATION_FAILED", t);
54
+ }
55
+ async function S(e) {
56
+ let { managedAddress: t, sessionKeyAddress: n } = e, a = await b(t), s = d({
57
+ client: u(),
58
+ chain: r(),
59
+ address: t
60
+ });
61
+ try {
62
+ let e = m({
63
+ contract: s,
64
+ account: a,
65
+ sessionKeyAddress: n
66
+ }), t = await f({
67
+ account: a,
68
+ transaction: e
69
+ });
70
+ await i(t.transactionHash);
71
+ } catch (e) {
72
+ throw new o(y(), "MODULAR_SIGNER_ACTIVATION_FAILED", t, e);
73
+ }
74
+ }
75
+ async function C(e, r) {
76
+ try {
77
+ return await n(e) ? await t(e, r) : !1;
78
+ } catch (t) {
79
+ throw new o(v(), "MODULAR_SIGNER_ACTIVATION_FAILED", e, t);
80
+ }
81
+ }
82
+ //#endregion
83
+ export { S as i, g as n, C as r, x as t };
84
+
85
+ //# sourceMappingURL=ensureAutomationSessionKey-Dyfk8qVp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureAutomationSessionKey-Dyfk8qVp.js","names":[],"sources":["../src/helpers/ensureAutomationSessionKey.ts"],"sourcesContent":["import { getContract, sendTransaction } from 'thirdweb'\nimport {\n addSessionKey,\n removeSessionKey,\n shouldUpdateSessionKey,\n} from 'thirdweb/extensions/erc4337'\nimport type { Address } from 'viem'\nimport { ManagedAccountPublishError } from '../errors'\nimport { isContractDeployed, waitForPublishReceipt } from './chainClient'\nimport { readIsActiveSigner } from './contracts'\nimport {\n buildAutomationSessionKeyPermissions,\n toThirdwebSessionKeyPermissions,\n} from './automationSessionKeyPermissions'\nimport { getClient, getManagedAccountWallet } from './thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\nimport { getPublishChainName } from './chainConfig'\n\nconst MSG_UNAVAILABLE = () =>\n `Could not connect the managed publishing account to authorize an automation session key on ${getPublishChainName()}. Reconnect and try again.`\nconst MSG_ACTIVATION_FAILED = () =>\n `Could not authorize the automation session key on your publishing account on ${getPublishChainName()}.`\nconst MSG_REMOVAL_FAILED = () =>\n `Could not remove the automation session key from your publishing account on ${getPublishChainName()}.`\n\nasync function getManagedAccountForSessionKeyAdmin(managedAddress: string) {\n const managedWallet = getManagedAccountWallet()\n await managedWallet.autoConnect({ client: getClient(), chain: getPublishThirdwebChain() })\n const managedAccount = managedWallet.getAccount()\n if (!managedAccount) {\n throw new ManagedAccountPublishError(\n MSG_UNAVAILABLE(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n )\n }\n return managedAccount\n}\n\n/**\n * Ensures `sessionKeyAddress` is an active automation session signer on the ManagedAccount\n * with **executor-module-only** approved targets. Signed by the managed EIP-4337 wallet (user).\n */\nexport async function ensureAutomationSessionKey(params: {\n managedAddress: string\n sessionKeyAddress: string\n /** Unix seconds end time for the session key (optional). */\n expiresAt?: number\n}): Promise<void> {\n const { managedAddress, sessionKeyAddress, expiresAt } = params\n const managedAccount = await getManagedAccountForSessionKeyAdmin(managedAddress)\n\n const accountContract = getContract({\n client: getClient(),\n chain: getPublishThirdwebChain(),\n address: managedAddress,\n })\n const permissions = toThirdwebSessionKeyPermissions(\n buildAutomationSessionKeyPermissions({ expiresAt }),\n )\n\n let shouldUpdate = false\n try {\n shouldUpdate = await shouldUpdateSessionKey({\n accountContract,\n sessionKeyAddress,\n newPermissions: permissions,\n })\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n\n if (shouldUpdate) {\n try {\n const tx = addSessionKey({\n contract: accountContract,\n account: managedAccount,\n sessionKeyAddress,\n permissions,\n })\n const result = await sendTransaction({ account: managedAccount, transaction: tx })\n await waitForPublishReceipt(result.transactionHash as `0x${string}`)\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n }\n\n const active = await isAutomationSessionActive(managedAddress, sessionKeyAddress)\n if (!active) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n )\n }\n}\n\n/**\n * Removes an automation session key from the ManagedAccount (user-signed via managed wallet).\n */\nexport async function removeAutomationSessionKey(params: {\n managedAddress: string\n sessionKeyAddress: string\n}): Promise<void> {\n const { managedAddress, sessionKeyAddress } = params\n const managedAccount = await getManagedAccountForSessionKeyAdmin(managedAddress)\n\n const accountContract = getContract({\n client: getClient(),\n chain: getPublishThirdwebChain(),\n address: managedAddress,\n })\n\n try {\n const tx = removeSessionKey({\n contract: accountContract,\n account: managedAccount,\n sessionKeyAddress,\n })\n const result = await sendTransaction({ account: managedAccount, transaction: tx })\n await waitForPublishReceipt(result.transactionHash as `0x${string}`)\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_REMOVAL_FAILED(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n}\n\n/**\n * True when `sessionKeyAddress` is an active signer on the ManagedAccount.\n * Returns `false` when the ManagedAccount has no bytecode (undeployed ≠ unauthorized).\n * Throws when bytecode or `isActiveSigner` cannot be read on a live account (RPC / decode),\n * so unattended automation does not silently fall through to in-app bootstrap.\n */\nexport async function isAutomationSessionActive(\n managedAddress: string,\n sessionKeyAddress: string,\n): Promise<boolean> {\n try {\n if (!(await isContractDeployed(managedAddress))) {\n return false\n }\n return await readIsActiveSigner(\n managedAddress as Address,\n sessionKeyAddress as Address,\n )\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;IAkBM,UACJ,8FAA8F,EAAoB,EAAE,6BAChH,UACJ,gFAAgF,EAAoB,EAAE,IAClG,UACJ,+EAA+E,EAAoB,EAAE;AAEvG,eAAe,EAAoC,GAAwB;CACzE,IAAM,IAAgB,EAAwB;CAC9C,MAAM,EAAc,YAAY;EAAE,QAAQ,EAAU;EAAG,OAAO,EAAwB;CAAE,CAAC;CACzF,IAAM,IAAiB,EAAc,WAAW;CAChD,IAAI,CAAC,GACH,MAAM,IAAI,EACR,EAAgB,GAChB,oCACA,CACF;CAEF,OAAO;AACT;AAMA,eAAsB,EAA2B,GAK/B;CAChB,IAAM,EAAE,mBAAgB,sBAAmB,iBAAc,GACnD,IAAiB,MAAM,EAAoC,CAAc,GAEzE,IAAkB,EAAY;EAClC,QAAQ,EAAU;EAClB,OAAO,EAAwB;EAC/B,SAAS;CACX,CAAC,GACK,IAAc,EAClB,EAAqC,EAAE,aAAU,CAAC,CACpD,GAEI,IAAe;CACnB,IAAI;EACF,IAAe,MAAM,EAAuB;GAC1C;GACA;GACA,gBAAgB;EAClB,CAAC;CACH,SAAS,GAAO;EACd,MAAM,IAAI,EACR,EAAsB,GACtB,oCACA,GACA,CACF;CACF;CAEA,IAAI,GACF,IAAI;EACF,IAAM,IAAK,EAAc;GACvB,UAAU;GACV,SAAS;GACT;GACA;EACF,CAAC,GACK,IAAS,MAAM,EAAgB;GAAE,SAAS;GAAgB,aAAa;EAAG,CAAC;EACjF,MAAM,EAAsB,EAAO,eAAgC;CACrE,SAAS,GAAO;EACd,MAAM,IAAI,EACR,EAAsB,GACtB,oCACA,GACA,CACF;CACF;CAIF,IAAI,CAAC,MADgB,EAA0B,GAAgB,CAAiB,GAE9E,MAAM,IAAI,EACR,EAAsB,GACtB,oCACA,CACF;AAEJ;AAKA,eAAsB,EAA2B,GAG/B;CAChB,IAAM,EAAE,mBAAgB,yBAAsB,GACxC,IAAiB,MAAM,EAAoC,CAAc,GAEzE,IAAkB,EAAY;EAClC,QAAQ,EAAU;EAClB,OAAO,EAAwB;EAC/B,SAAS;CACX,CAAC;CAED,IAAI;EACF,IAAM,IAAK,EAAiB;GAC1B,UAAU;GACV,SAAS;GACT;EACF,CAAC,GACK,IAAS,MAAM,EAAgB;GAAE,SAAS;GAAgB,aAAa;EAAG,CAAC;EACjF,MAAM,EAAsB,EAAO,eAAgC;CACrE,SAAS,GAAO;EACd,MAAM,IAAI,EACR,EAAmB,GACnB,oCACA,GACA,CACF;CACF;AACF;AAQA,eAAsB,EACpB,GACA,GACkB;CAClB,IAAI;EAIF,OAHM,MAAM,EAAmB,CAAc,IAGtC,MAAM,EACX,GACA,CACF,IALS;CAMX,SAAS,GAAO;EACd,MAAM,IAAI,EACR,EAAsB,GACtB,oCACA,GACA,CACF;CACF;AACF"}
@@ -0,0 +1,24 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { _ as t, h as n, t as r } from "./chainConfig-DDA4YmAB.js";
3
+ import { r as i } from "./errors-Du3LNbJN.js";
4
+ import { B as a, M as o, v as s } from "./publishAuthorization-B0G1em4a.js";
5
+ import { t as c } from "./publishThirdwebClient-CQ29pzG2.js";
6
+ import { t as l } from "./managedAccountAdmin-DhCRBoPX.js";
7
+ //#region src/helpers/ensureModularPublishBootstrap.ts
8
+ var u = /* @__PURE__ */ e({ ensureModularPublishBootstrap: () => d });
9
+ async function d(e) {
10
+ a();
11
+ let u = o();
12
+ await u.autoConnect({
13
+ client: c(),
14
+ chain: t()
15
+ });
16
+ let d = u.getAccount();
17
+ if (!d) throw new i(`Could not connect the managed publishing account on ${r()}. Reconnect with the same sign-in method and try again.`, "MANAGED_ACCOUNT_UNAVAILABLE", e);
18
+ if (d.address.toLowerCase() !== e.toLowerCase()) throw new i(`The connected managed account (${d.address}) is not the publishing account ${e}. Reconnect with the sign-in method that owns it.`, "MANAGED_ACCOUNT_UNAVAILABLE", e);
19
+ return await s(e, async () => n(await l(e))), d;
20
+ }
21
+ //#endregion
22
+ export { u as n, d as t };
23
+
24
+ //# sourceMappingURL=ensureModularPublishBootstrap-5HJDqJJM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureModularPublishBootstrap-5HJDqJJM.js","names":[],"sources":["../src/helpers/ensureModularPublishBootstrap.ts"],"sourcesContent":["import type { Account } from 'thirdweb/wallets'\nimport { ManagedAccountPublishError } from '../errors'\nimport { fromThirdwebAccount } from './adapters/thirdwebAccount'\nimport { getPublishChainName } from './chainConfig'\nimport { ensureManagedAccountEasConfigured } from './ensureManagedAccountEasConfigured'\nimport { getManagedAccountAdmin } from './managedAccountAdmin'\nimport { getClient, getManagedAccountWallet, syncPublishInAppAuthToken } from './thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\n\n/**\n * Returns the account that sends interactive `multiPublish`: the user's managed (EIP-4337) smart\n * account. Its UserOps execute `multiPublish` on the account itself, a self-call the Seed\n * extension accepts; session keys and other non-admin callers are rejected with `Unauthorized`.\n *\n * Also checks the account's EAS pointer. Only pre-rollout accounts that report no EAS get\n * `setEas`, sent by the admin EOA.\n */\nexport async function ensureModularPublishBootstrap(managedAddress: string): Promise<Account> {\n syncPublishInAppAuthToken()\n const managedWallet = getManagedAccountWallet()\n await managedWallet.autoConnect({ client: getClient(), chain: getPublishThirdwebChain() })\n const managedAccount = managedWallet.getAccount()\n if (!managedAccount) {\n throw new ManagedAccountPublishError(\n `Could not connect the managed publishing account on ${getPublishChainName()}. Reconnect with the same sign-in method and try again.`,\n 'MANAGED_ACCOUNT_UNAVAILABLE',\n managedAddress,\n )\n }\n if (managedAccount.address.toLowerCase() !== managedAddress.toLowerCase()) {\n throw new ManagedAccountPublishError(\n `The connected managed account (${managedAccount.address}) is not the publishing account ${managedAddress}. Reconnect with the sign-in method that owns it.`,\n 'MANAGED_ACCOUNT_UNAVAILABLE',\n managedAddress,\n )\n }\n\n await ensureManagedAccountEasConfigured(managedAddress, async () =>\n fromThirdwebAccount(await getManagedAccountAdmin(managedAddress)),\n )\n return managedAccount\n}\n"],"mappings":";;;;;;;;AAiBA,eAAsB,EAA8B,GAA0C;CAC5F,EAA0B;CAC1B,IAAM,IAAgB,EAAwB;CAC9C,MAAM,EAAc,YAAY;EAAE,QAAQ,EAAU;EAAG,OAAO,EAAwB;CAAE,CAAC;CACzF,IAAM,IAAiB,EAAc,WAAW;CAChD,IAAI,CAAC,GACH,MAAM,IAAI,EACR,uDAAuD,EAAoB,EAAE,0DAC7E,+BACA,CACF;CAEF,IAAI,EAAe,QAAQ,YAAY,MAAM,EAAe,YAAY,GACtE,MAAM,IAAI,EACR,kCAAkC,EAAe,QAAQ,kCAAkC,EAAe,oDAC1G,+BACA,CACF;CAMF,OAHA,MAAM,EAAkC,GAAgB,YACtD,EAAoB,MAAM,EAAuB,CAAc,CAAC,CAClE,GACO;AACT"}
@@ -0,0 +1,24 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { _ as t, h as n, t as r } from "./chainConfig-BYm5OXpk.js";
3
+ import { r as i } from "./errors-Du3LNbJN.js";
4
+ import { B as a, M as o, v as s } from "./publishAuthorization-CxBkijU6.js";
5
+ import { t as c } from "./publishThirdwebClient-BnDhP3N-.js";
6
+ import { t as l } from "./managedAccountAdmin-B64V1rlU.js";
7
+ //#region src/helpers/ensureModularPublishBootstrap.ts
8
+ var u = /* @__PURE__ */ e({ ensureModularPublishBootstrap: () => d });
9
+ async function d(e) {
10
+ a();
11
+ let u = o();
12
+ await u.autoConnect({
13
+ client: c(),
14
+ chain: t()
15
+ });
16
+ let d = u.getAccount();
17
+ if (!d) throw new i(`Could not connect the managed publishing account on ${r()}. Reconnect with the same sign-in method and try again.`, "MANAGED_ACCOUNT_UNAVAILABLE", e);
18
+ if (d.address.toLowerCase() !== e.toLowerCase()) throw new i(`The connected managed account (${d.address}) is not the publishing account ${e}. Reconnect with the sign-in method that owns it.`, "MANAGED_ACCOUNT_UNAVAILABLE", e);
19
+ return await s(e, async () => n(await l(e))), d;
20
+ }
21
+ //#endregion
22
+ export { u as n, d as t };
23
+
24
+ //# sourceMappingURL=ensureModularPublishBootstrap-BW8jKN_A.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureModularPublishBootstrap-BW8jKN_A.js","names":[],"sources":["../src/helpers/ensureModularPublishBootstrap.ts"],"sourcesContent":["import type { Account } from 'thirdweb/wallets'\nimport { ManagedAccountPublishError } from '../errors'\nimport { fromThirdwebAccount } from './adapters/thirdwebAccount'\nimport { getPublishChainName } from './chainConfig'\nimport { ensureManagedAccountEasConfigured } from './ensureManagedAccountEasConfigured'\nimport { getManagedAccountAdmin } from './managedAccountAdmin'\nimport { getClient, getManagedAccountWallet, syncPublishInAppAuthToken } from './thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\n\n/**\n * Returns the account that sends interactive `multiPublish`: the user's managed (EIP-4337) smart\n * account. Its UserOps execute `multiPublish` on the account itself, a self-call the Seed\n * extension accepts; session keys and other non-admin callers are rejected with `Unauthorized`.\n *\n * Also checks the account's EAS pointer. Only pre-rollout accounts that report no EAS get\n * `setEas`, sent by the admin EOA.\n */\nexport async function ensureModularPublishBootstrap(managedAddress: string): Promise<Account> {\n syncPublishInAppAuthToken()\n const managedWallet = getManagedAccountWallet()\n await managedWallet.autoConnect({ client: getClient(), chain: getPublishThirdwebChain() })\n const managedAccount = managedWallet.getAccount()\n if (!managedAccount) {\n throw new ManagedAccountPublishError(\n `Could not connect the managed publishing account on ${getPublishChainName()}. Reconnect with the same sign-in method and try again.`,\n 'MANAGED_ACCOUNT_UNAVAILABLE',\n managedAddress,\n )\n }\n if (managedAccount.address.toLowerCase() !== managedAddress.toLowerCase()) {\n throw new ManagedAccountPublishError(\n `The connected managed account (${managedAccount.address}) is not the publishing account ${managedAddress}. Reconnect with the sign-in method that owns it.`,\n 'MANAGED_ACCOUNT_UNAVAILABLE',\n managedAddress,\n )\n }\n\n await ensureManagedAccountEasConfigured(managedAddress, async () =>\n fromThirdwebAccount(await getManagedAccountAdmin(managedAddress)),\n )\n return managedAccount\n}\n"],"mappings":";;;;;;;;AAiBA,eAAsB,EAA8B,GAA0C;CAC5F,EAA0B;CAC1B,IAAM,IAAgB,EAAwB;CAC9C,MAAM,EAAc,YAAY;EAAE,QAAQ,EAAU;EAAG,OAAO,EAAwB;CAAE,CAAC;CACzF,IAAM,IAAiB,EAAc,WAAW;CAChD,IAAI,CAAC,GACH,MAAM,IAAI,EACR,uDAAuD,EAAoB,EAAE,0DAC7E,+BACA,CACF;CAEF,IAAI,EAAe,QAAQ,YAAY,MAAM,EAAe,YAAY,GACtE,MAAM,IAAI,EACR,kCAAkC,EAAe,QAAQ,kCAAkC,EAAe,oDAC1G,+BACA,CACF;CAMF,OAHA,MAAM,EAAkC,GAAgB,YACtD,EAAoB,MAAM,EAAuB,CAAc,CAAC,CAClE,GACO;AACT"}
@@ -0,0 +1,129 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { H as t, J as n, K as r, q as i, r as a, tt as o } from "./config-CPBd5C_b.js";
3
+ import { a as s, n as c, r as l } from "./errors-Du3LNbJN.js";
4
+ import { N as u, P as d, v as f } from "./publishAuthorization-DqhhCAhd.js";
5
+ import { t as p } from "./publishThirdwebClient-DzXFjQ7L.js";
6
+ import { deploySmartAccount as m, getContract as h, sendTransaction as g } from "thirdweb";
7
+ import { optimismSepolia as _ } from "thirdweb/chains";
8
+ import { addSessionKey as v, shouldUpdateSessionKey as y } from "thirdweb/extensions/erc4337";
9
+ //#region src/helpers/ensureEip7702ModularAccountReady.ts
10
+ var b = "Modular (EIP-7702) wallet is not connected. Sign in with the same method and try again.", x = "Your modular account is not upgraded to an EIP-7702 smart account on Optimism Sepolia yet. Enable autoDeployEip7702ModularAccount in publish config or complete wallet setup, then retry.", S = "Automatic EIP-7702 smart account setup failed on Optimism Sepolia. Retry or reconnect your wallet.", C = "EIP-7702 upgrade was sent but on-chain bytecode was not detected yet. Wait a moment and retry.", w = 5;
11
+ async function T() {
12
+ let { autoDeployEip7702ModularAccount: e } = a(), t = d();
13
+ await t.autoConnect({
14
+ client: p(),
15
+ chain: _
16
+ });
17
+ let n = t.getAccount();
18
+ if (!n) throw new c(b, "EIP7702_MODULAR_ACCOUNT_UNAVAILABLE");
19
+ let o = p(), s = h({
20
+ client: o,
21
+ chain: _,
22
+ address: n.address
23
+ });
24
+ if (!await r(n.address)) {
25
+ if (!e) throw new c(x, "EIP7702_MODULAR_NOT_UPGRADED", n.address);
26
+ try {
27
+ await m({
28
+ smartAccount: n,
29
+ chain: _,
30
+ client: o,
31
+ accountContract: s
32
+ });
33
+ } catch (e) {
34
+ if (await i(n.address, w)) return;
35
+ throw new c(S, "EIP7702_MODULAR_DEPLOY_FAILED", n.address, e);
36
+ }
37
+ if (!await i(n.address, w)) throw new c(C, "EIP7702_MODULAR_NOT_CONFIRMED", n.address);
38
+ }
39
+ }
40
+ //#endregion
41
+ //#region src/helpers/defaultApprovedTargetsForModularPublish.ts
42
+ function E(e) {
43
+ let t = /* @__PURE__ */ new Set();
44
+ for (let n of e) {
45
+ let e = n.trim().toLowerCase();
46
+ e.startsWith("0x") && e.length === 42 && t.add(e);
47
+ }
48
+ return [...t].sort().map((e) => e);
49
+ }
50
+ function D(e) {
51
+ let t = a(), n = [e, o];
52
+ return t.modularAccountModuleContract?.trim() && n.push(t.modularAccountModuleContract.trim()), E(n);
53
+ }
54
+ //#endregion
55
+ //#region src/helpers/ensureManagedSignerSessionKey.ts
56
+ var O = "Could not connect the managed publishing account to authorize the modular signer on Optimism Sepolia. Reconnect and try again.", k = "Could not authorize the modular wallet as a session signer on your publishing account on Optimism Sepolia.";
57
+ async function A(e) {
58
+ let { managedAddress: r, signerAddress: i } = e, a = u();
59
+ await a.autoConnect({
60
+ client: p(),
61
+ chain: _
62
+ });
63
+ let o = a.getAccount();
64
+ if (!o) throw new l(O, "MODULAR_SIGNER_ACTIVATION_FAILED", r);
65
+ let s = h({
66
+ client: p(),
67
+ chain: _,
68
+ address: r
69
+ }), c = {
70
+ approvedTargets: D(r),
71
+ nativeTokenLimitPerTransaction: 0
72
+ }, d = !1;
73
+ try {
74
+ d = await y({
75
+ accountContract: s,
76
+ sessionKeyAddress: i,
77
+ newPermissions: c
78
+ });
79
+ } catch (e) {
80
+ throw new l(k, "MODULAR_SIGNER_ACTIVATION_FAILED", r, e);
81
+ }
82
+ if (d) try {
83
+ let e = v({
84
+ contract: s,
85
+ account: o,
86
+ sessionKeyAddress: i,
87
+ permissions: c
88
+ }), t = await g({
89
+ account: o,
90
+ transaction: e
91
+ });
92
+ await n(t.transactionHash);
93
+ } catch (e) {
94
+ throw new l(k, "MODULAR_SIGNER_ACTIVATION_FAILED", r, e);
95
+ }
96
+ let f = !1;
97
+ try {
98
+ f = await t(r, i);
99
+ } catch (e) {
100
+ throw new l(k, "MODULAR_SIGNER_ACTIVATION_FAILED", r, e);
101
+ }
102
+ if (!f) throw new l(k, "MODULAR_SIGNER_ACTIVATION_FAILED", r);
103
+ }
104
+ //#endregion
105
+ //#region src/helpers/ensureModularPublishBootstrap.ts
106
+ var j = /* @__PURE__ */ e({ ensureModularPublishBootstrap: () => M });
107
+ async function M(e) {
108
+ let t = d();
109
+ await t.autoConnect({
110
+ client: p(),
111
+ chain: _
112
+ });
113
+ let n = t.getAccount();
114
+ if (!n) throw Error("Failed to get modular account");
115
+ try {
116
+ await A({
117
+ managedAddress: e,
118
+ signerAddress: n.address
119
+ });
120
+ } catch (e) {
121
+ if (!a().autoDeployEip7702ModularAccount || !s(e)) throw e;
122
+ await T();
123
+ }
124
+ return await f(e, (await import("./config-CPBd5C_b.js").then((e) => e.c)).fromThirdwebAccount(n)), n;
125
+ }
126
+ //#endregion
127
+ export { T as a, D as i, j as n, A as r, M as t };
128
+
129
+ //# sourceMappingURL=ensureModularPublishBootstrap-Btih5xbB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureModularPublishBootstrap-Btih5xbB.js","names":[],"sources":["../src/helpers/ensureEip7702ModularAccountReady.ts","../src/helpers/defaultApprovedTargetsForModularPublish.ts","../src/helpers/ensureManagedSignerSessionKey.ts","../src/helpers/ensureModularPublishBootstrap.ts"],"sourcesContent":["import { deploySmartAccount, getContract } from 'thirdweb'\nimport { optimismSepolia } from 'thirdweb/chains'\nimport { getPublishConfig } from '../config'\nimport { Eip7702ModularAccountPublishError } from '../errors'\nimport { isContractDeployed, pollSmartWalletDeployed } from './chainClient'\nimport { getClient, getModularAccountWallet } from './thirdweb'\n\nconst MSG_NO_ACCOUNT =\n 'Modular (EIP-7702) wallet is not connected. Sign in with the same method and try again.'\nconst MSG_NOT_UPGRADED =\n 'Your modular account is not upgraded to an EIP-7702 smart account on Optimism Sepolia yet. Enable autoDeployEip7702ModularAccount in publish config or complete wallet setup, then retry.'\nconst MSG_DEPLOY_FAILED =\n 'Automatic EIP-7702 smart account setup failed on Optimism Sepolia. Retry or reconnect your wallet.'\nconst MSG_NOT_CONFIRMED =\n 'EIP-7702 upgrade was sent but on-chain bytecode was not detected yet. Wait a moment and retry.'\n\nconst DEPLOY_POLL_ATTEMPTS = 5\n\n/**\n * Ensures the Thirdweb in-app modular wallet (EIP-7702) has non-empty bytecode at its address\n * on Optimism Sepolia. deploySmartAccount remains Thirdweb; bytecode checks use viem.\n */\nexport async function ensureEip7702ModularAccountReady(): Promise<void> {\n const { autoDeployEip7702ModularAccount } = getPublishConfig()\n const modularAccountWallet = getModularAccountWallet()\n await modularAccountWallet.autoConnect({ client: getClient(), chain: optimismSepolia })\n const modularAccount = modularAccountWallet.getAccount()\n if (!modularAccount) {\n throw new Eip7702ModularAccountPublishError(MSG_NO_ACCOUNT, 'EIP7702_MODULAR_ACCOUNT_UNAVAILABLE')\n }\n\n const client = getClient()\n const accountContract = getContract({\n client,\n chain: optimismSepolia,\n address: modularAccount.address,\n })\n\n if (await isContractDeployed(modularAccount.address)) {\n return\n }\n\n if (!autoDeployEip7702ModularAccount) {\n throw new Eip7702ModularAccountPublishError(\n MSG_NOT_UPGRADED,\n 'EIP7702_MODULAR_NOT_UPGRADED',\n modularAccount.address,\n )\n }\n\n try {\n await deploySmartAccount({\n smartAccount: modularAccount,\n chain: optimismSepolia,\n client,\n accountContract,\n })\n } catch (cause) {\n if (await pollSmartWalletDeployed(modularAccount.address, DEPLOY_POLL_ATTEMPTS)) {\n return\n }\n throw new Eip7702ModularAccountPublishError(\n MSG_DEPLOY_FAILED,\n 'EIP7702_MODULAR_DEPLOY_FAILED',\n modularAccount.address,\n cause,\n )\n }\n\n if (!(await pollSmartWalletDeployed(modularAccount.address, DEPLOY_POLL_ATTEMPTS))) {\n throw new Eip7702ModularAccountPublishError(\n MSG_NOT_CONFIRMED,\n 'EIP7702_MODULAR_NOT_CONFIRMED',\n modularAccount.address,\n )\n }\n}\n","import { getPublishConfig } from '../config'\nimport { EAS_CONTRACT_ADDRESS } from './constants'\n\nfunction uniqueAddressesLower(addresses: string[]): `0x${string}`[] {\n const set = new Set<string>()\n for (const a of addresses) {\n const t = a.trim().toLowerCase()\n if (t.startsWith('0x') && t.length === 42) set.add(t)\n }\n return [...set].sort().map((x) => x as `0x${string}`)\n}\n\n/** Allowlisted call targets for modular session signers: managed account, EAS, optional executor module. */\nexport function defaultApprovedTargetsForModularPublish(managedAddress: string): `0x${string}`[] {\n const cfg = getPublishConfig()\n const extra: string[] = [managedAddress, EAS_CONTRACT_ADDRESS]\n if (cfg.modularAccountModuleContract?.trim()) {\n extra.push(cfg.modularAccountModuleContract.trim())\n }\n return uniqueAddressesLower(extra)\n}\n","import { getContract, sendTransaction } from 'thirdweb'\nimport { addSessionKey, shouldUpdateSessionKey } from 'thirdweb/extensions/erc4337'\nimport { optimismSepolia } from 'thirdweb/chains'\nimport type { Address } from 'viem'\nimport { ManagedAccountPublishError } from '../errors'\nimport { waitForPublishReceipt } from './chainClient'\nimport { readIsActiveSigner } from './contracts'\nimport { defaultApprovedTargetsForModularPublish } from './defaultApprovedTargetsForModularPublish'\nimport { getClient, getManagedAccountWallet } from './thirdweb'\n\nconst MSG_UNAVAILABLE =\n 'Could not connect the managed publishing account to authorize the modular signer on Optimism Sepolia. Reconnect and try again.'\nconst MSG_ACTIVATION_FAILED =\n 'Could not authorize the modular wallet as a session signer on your publishing account on Optimism Sepolia.'\n\n/**\n * Ensures the modular (EIP-7702) wallet is an active session signer on the ManagedAccount.\n * If permissions are missing or stale, sends `addSessionKey` signed by the managed EIP-4337 wallet.\n * Session-key AA extensions remain on Thirdweb; verification uses viem.\n */\nexport async function ensureManagedSignerSessionKey(params: {\n managedAddress: string\n signerAddress: string\n}): Promise<void> {\n const { managedAddress, signerAddress } = params\n const managedWallet = getManagedAccountWallet()\n await managedWallet.autoConnect({ client: getClient(), chain: optimismSepolia })\n const managedAccount = managedWallet.getAccount()\n if (!managedAccount) {\n throw new ManagedAccountPublishError(\n MSG_UNAVAILABLE,\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n )\n }\n\n const accountContract = getContract({\n client: getClient(),\n chain: optimismSepolia,\n address: managedAddress,\n })\n const permissions = {\n approvedTargets: defaultApprovedTargetsForModularPublish(managedAddress),\n nativeTokenLimitPerTransaction: 0,\n }\n\n let shouldUpdate = false\n try {\n shouldUpdate = await shouldUpdateSessionKey({\n accountContract,\n sessionKeyAddress: signerAddress,\n newPermissions: permissions,\n })\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED,\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n\n if (shouldUpdate) {\n try {\n const tx = addSessionKey({\n contract: accountContract,\n account: managedAccount,\n sessionKeyAddress: signerAddress,\n permissions,\n })\n const result = await sendTransaction({ account: managedAccount, transaction: tx })\n await waitForPublishReceipt(result.transactionHash as `0x${string}`)\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED,\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n }\n\n let active = false\n try {\n active = await readIsActiveSigner(managedAddress as Address, signerAddress as Address)\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED,\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n\n if (!active) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED,\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n )\n }\n}\n","import type { Account } from 'thirdweb/wallets'\nimport { optimismSepolia } from 'thirdweb/chains'\nimport { getPublishConfig } from '../config'\nimport { isManagedAccountPublishError } from '../errors'\nimport { ensureEip7702ModularAccountReady } from './ensureEip7702ModularAccountReady'\nimport { ensureManagedAccountEasConfigured } from './ensureManagedAccountEasConfigured'\nimport { ensureManagedSignerSessionKey } from './ensureManagedSignerSessionKey'\nimport { getClient, getModularAccountWallet } from './thirdweb'\n\n/**\n * One-time modular publish bootstrap before `multiPublish`:\n * session signer on managed account → EAS pointer → optional EIP-7702 fallback.\n */\nexport async function ensureModularPublishBootstrap(managedAddress: string): Promise<Account> {\n const modularAccountWallet = getModularAccountWallet()\n await modularAccountWallet.autoConnect({ client: getClient(), chain: optimismSepolia })\n const modularAccount = modularAccountWallet.getAccount()\n if (!modularAccount) {\n throw new Error('Failed to get modular account')\n }\n\n try {\n await ensureManagedSignerSessionKey({\n managedAddress,\n signerAddress: modularAccount.address,\n })\n } catch (cause) {\n if (!getPublishConfig().autoDeployEip7702ModularAccount) {\n throw cause\n }\n if (!isManagedAccountPublishError(cause)) {\n throw cause\n }\n await ensureEip7702ModularAccountReady()\n }\n\n await ensureManagedAccountEasConfigured(managedAddress, (await import('./adapters/thirdwebAccount')).fromThirdwebAccount(modularAccount))\n return modularAccount\n}\n"],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { G as t, U as n, W as r, Y as i, r as a, z as o } from "./config-EQZZNH9H.js";
3
+ import { a as s, n as c, r as l } from "./errors-Du3LNbJN.js";
4
+ import { A as u, j as d, v as f } from "./publishAuthorization-Bltn3y_K.js";
5
+ import { t as p } from "./publishThirdwebClient-CZIVmr9Z.js";
6
+ import { deploySmartAccount as m, getContract as h, sendTransaction as g } from "thirdweb";
7
+ import { optimismSepolia as _ } from "thirdweb/chains";
8
+ import { addSessionKey as v, shouldUpdateSessionKey as y } from "thirdweb/extensions/erc4337";
9
+ //#region src/helpers/ensureEip7702ModularAccountReady.ts
10
+ var b = "Modular (EIP-7702) wallet is not connected. Sign in with the same method and try again.", x = "Your modular account is not upgraded to an EIP-7702 smart account on Optimism Sepolia yet. Enable autoDeployEip7702ModularAccount in publish config or complete wallet setup, then retry.", S = "Automatic EIP-7702 smart account setup failed on Optimism Sepolia. Retry or reconnect your wallet.", C = "EIP-7702 upgrade was sent but on-chain bytecode was not detected yet. Wait a moment and retry.", w = 5;
11
+ async function T() {
12
+ let { autoDeployEip7702ModularAccount: e } = a(), t = d();
13
+ await t.autoConnect({
14
+ client: p(),
15
+ chain: _
16
+ });
17
+ let i = t.getAccount();
18
+ if (!i) throw new c(b, "EIP7702_MODULAR_ACCOUNT_UNAVAILABLE");
19
+ let o = p(), s = h({
20
+ client: o,
21
+ chain: _,
22
+ address: i.address
23
+ });
24
+ if (!await n(i.address)) {
25
+ if (!e) throw new c(x, "EIP7702_MODULAR_NOT_UPGRADED", i.address);
26
+ try {
27
+ await m({
28
+ smartAccount: i,
29
+ chain: _,
30
+ client: o,
31
+ accountContract: s
32
+ });
33
+ } catch (e) {
34
+ if (await r(i.address, w)) return;
35
+ throw new c(S, "EIP7702_MODULAR_DEPLOY_FAILED", i.address, e);
36
+ }
37
+ if (!await r(i.address, w)) throw new c(C, "EIP7702_MODULAR_NOT_CONFIRMED", i.address);
38
+ }
39
+ }
40
+ //#endregion
41
+ //#region src/helpers/defaultApprovedTargetsForModularPublish.ts
42
+ function E(e) {
43
+ let t = /* @__PURE__ */ new Set();
44
+ for (let n of e) {
45
+ let e = n.trim().toLowerCase();
46
+ e.startsWith("0x") && e.length === 42 && t.add(e);
47
+ }
48
+ return [...t].sort().map((e) => e);
49
+ }
50
+ function D(e) {
51
+ let t = a(), n = [e, i];
52
+ return t.modularAccountModuleContract?.trim() && n.push(t.modularAccountModuleContract.trim()), E(n);
53
+ }
54
+ //#endregion
55
+ //#region src/helpers/ensureManagedSignerSessionKey.ts
56
+ var O = "Could not connect the managed publishing account to authorize the modular signer on Optimism Sepolia. Reconnect and try again.", k = "Could not authorize the modular wallet as a session signer on your publishing account on Optimism Sepolia.";
57
+ async function A(e) {
58
+ let { managedAddress: n, signerAddress: r } = e, i = u();
59
+ await i.autoConnect({
60
+ client: p(),
61
+ chain: _
62
+ });
63
+ let a = i.getAccount();
64
+ if (!a) throw new l(O, "MODULAR_SIGNER_ACTIVATION_FAILED", n);
65
+ let s = h({
66
+ client: p(),
67
+ chain: _,
68
+ address: n
69
+ }), c = {
70
+ approvedTargets: D(n),
71
+ nativeTokenLimitPerTransaction: 0
72
+ }, d = !1;
73
+ try {
74
+ d = await y({
75
+ accountContract: s,
76
+ sessionKeyAddress: r,
77
+ newPermissions: c
78
+ });
79
+ } catch (e) {
80
+ throw new l(k, "MODULAR_SIGNER_ACTIVATION_FAILED", n, e);
81
+ }
82
+ if (d) try {
83
+ let e = v({
84
+ contract: s,
85
+ account: a,
86
+ sessionKeyAddress: r,
87
+ permissions: c
88
+ }), n = await g({
89
+ account: a,
90
+ transaction: e
91
+ });
92
+ await t(n.transactionHash);
93
+ } catch (e) {
94
+ throw new l(k, "MODULAR_SIGNER_ACTIVATION_FAILED", n, e);
95
+ }
96
+ let f = !1;
97
+ try {
98
+ f = await o(n, r);
99
+ } catch (e) {
100
+ throw new l(k, "MODULAR_SIGNER_ACTIVATION_FAILED", n, e);
101
+ }
102
+ if (!f) throw new l(k, "MODULAR_SIGNER_ACTIVATION_FAILED", n);
103
+ }
104
+ //#endregion
105
+ //#region src/helpers/ensureModularPublishBootstrap.ts
106
+ var j = /* @__PURE__ */ e({ ensureModularPublishBootstrap: () => M });
107
+ async function M(e) {
108
+ let t = d();
109
+ await t.autoConnect({
110
+ client: p(),
111
+ chain: _
112
+ });
113
+ let n = t.getAccount();
114
+ if (!n) throw Error("Failed to get modular account");
115
+ try {
116
+ await A({
117
+ managedAddress: e,
118
+ signerAddress: n.address
119
+ });
120
+ } catch (e) {
121
+ if (!a().autoDeployEip7702ModularAccount || !s(e)) throw e;
122
+ await T();
123
+ }
124
+ return await f(e, (await import("./config-EQZZNH9H.js").then((e) => e.c)).fromThirdwebAccount(n)), n;
125
+ }
126
+ //#endregion
127
+ export { T as a, D as i, j as n, A as r, M as t };
128
+
129
+ //# sourceMappingURL=ensureModularPublishBootstrap-CI4U08Gc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureModularPublishBootstrap-CI4U08Gc.js","names":[],"sources":["../src/helpers/ensureEip7702ModularAccountReady.ts","../src/helpers/defaultApprovedTargetsForModularPublish.ts","../src/helpers/ensureManagedSignerSessionKey.ts","../src/helpers/ensureModularPublishBootstrap.ts"],"sourcesContent":["import { deploySmartAccount, getContract } from 'thirdweb'\nimport { optimismSepolia } from 'thirdweb/chains'\nimport { getPublishConfig } from '../config'\nimport { Eip7702ModularAccountPublishError } from '../errors'\nimport { isContractDeployed, pollSmartWalletDeployed } from './chainClient'\nimport { getClient, getModularAccountWallet } from './thirdweb'\n\nconst MSG_NO_ACCOUNT =\n 'Modular (EIP-7702) wallet is not connected. Sign in with the same method and try again.'\nconst MSG_NOT_UPGRADED =\n 'Your modular account is not upgraded to an EIP-7702 smart account on Optimism Sepolia yet. Enable autoDeployEip7702ModularAccount in publish config or complete wallet setup, then retry.'\nconst MSG_DEPLOY_FAILED =\n 'Automatic EIP-7702 smart account setup failed on Optimism Sepolia. Retry or reconnect your wallet.'\nconst MSG_NOT_CONFIRMED =\n 'EIP-7702 upgrade was sent but on-chain bytecode was not detected yet. Wait a moment and retry.'\n\nconst DEPLOY_POLL_ATTEMPTS = 5\n\n/**\n * Ensures the Thirdweb in-app modular wallet (EIP-7702) has non-empty bytecode at its address\n * on Optimism Sepolia. deploySmartAccount remains Thirdweb; bytecode checks use viem.\n */\nexport async function ensureEip7702ModularAccountReady(): Promise<void> {\n const { autoDeployEip7702ModularAccount } = getPublishConfig()\n const modularAccountWallet = getModularAccountWallet()\n await modularAccountWallet.autoConnect({ client: getClient(), chain: optimismSepolia })\n const modularAccount = modularAccountWallet.getAccount()\n if (!modularAccount) {\n throw new Eip7702ModularAccountPublishError(MSG_NO_ACCOUNT, 'EIP7702_MODULAR_ACCOUNT_UNAVAILABLE')\n }\n\n const client = getClient()\n const accountContract = getContract({\n client,\n chain: optimismSepolia,\n address: modularAccount.address,\n })\n\n if (await isContractDeployed(modularAccount.address)) {\n return\n }\n\n if (!autoDeployEip7702ModularAccount) {\n throw new Eip7702ModularAccountPublishError(\n MSG_NOT_UPGRADED,\n 'EIP7702_MODULAR_NOT_UPGRADED',\n modularAccount.address,\n )\n }\n\n try {\n await deploySmartAccount({\n smartAccount: modularAccount,\n chain: optimismSepolia,\n client,\n accountContract,\n })\n } catch (cause) {\n if (await pollSmartWalletDeployed(modularAccount.address, DEPLOY_POLL_ATTEMPTS)) {\n return\n }\n throw new Eip7702ModularAccountPublishError(\n MSG_DEPLOY_FAILED,\n 'EIP7702_MODULAR_DEPLOY_FAILED',\n modularAccount.address,\n cause,\n )\n }\n\n if (!(await pollSmartWalletDeployed(modularAccount.address, DEPLOY_POLL_ATTEMPTS))) {\n throw new Eip7702ModularAccountPublishError(\n MSG_NOT_CONFIRMED,\n 'EIP7702_MODULAR_NOT_CONFIRMED',\n modularAccount.address,\n )\n }\n}\n","import { getPublishConfig } from '../config'\nimport { EAS_CONTRACT_ADDRESS } from './constants'\n\nfunction uniqueAddressesLower(addresses: string[]): `0x${string}`[] {\n const set = new Set<string>()\n for (const a of addresses) {\n const t = a.trim().toLowerCase()\n if (t.startsWith('0x') && t.length === 42) set.add(t)\n }\n return [...set].sort().map((x) => x as `0x${string}`)\n}\n\n/** Allowlisted call targets for modular session signers: managed account, EAS, optional executor module. */\nexport function defaultApprovedTargetsForModularPublish(managedAddress: string): `0x${string}`[] {\n const cfg = getPublishConfig()\n const extra: string[] = [managedAddress, EAS_CONTRACT_ADDRESS]\n if (cfg.modularAccountModuleContract?.trim()) {\n extra.push(cfg.modularAccountModuleContract.trim())\n }\n return uniqueAddressesLower(extra)\n}\n","import { getContract, sendTransaction } from 'thirdweb'\nimport { addSessionKey, shouldUpdateSessionKey } from 'thirdweb/extensions/erc4337'\nimport { optimismSepolia } from 'thirdweb/chains'\nimport type { Address } from 'viem'\nimport { ManagedAccountPublishError } from '../errors'\nimport { waitForPublishReceipt } from './chainClient'\nimport { readIsActiveSigner } from './contracts'\nimport { defaultApprovedTargetsForModularPublish } from './defaultApprovedTargetsForModularPublish'\nimport { getClient, getManagedAccountWallet } from './thirdweb'\n\nconst MSG_UNAVAILABLE =\n 'Could not connect the managed publishing account to authorize the modular signer on Optimism Sepolia. Reconnect and try again.'\nconst MSG_ACTIVATION_FAILED =\n 'Could not authorize the modular wallet as a session signer on your publishing account on Optimism Sepolia.'\n\n/**\n * Ensures the modular (EIP-7702) wallet is an active session signer on the ManagedAccount.\n * If permissions are missing or stale, sends `addSessionKey` signed by the managed EIP-4337 wallet.\n * Session-key AA extensions remain on Thirdweb; verification uses viem.\n */\nexport async function ensureManagedSignerSessionKey(params: {\n managedAddress: string\n signerAddress: string\n}): Promise<void> {\n const { managedAddress, signerAddress } = params\n const managedWallet = getManagedAccountWallet()\n await managedWallet.autoConnect({ client: getClient(), chain: optimismSepolia })\n const managedAccount = managedWallet.getAccount()\n if (!managedAccount) {\n throw new ManagedAccountPublishError(\n MSG_UNAVAILABLE,\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n )\n }\n\n const accountContract = getContract({\n client: getClient(),\n chain: optimismSepolia,\n address: managedAddress,\n })\n const permissions = {\n approvedTargets: defaultApprovedTargetsForModularPublish(managedAddress),\n nativeTokenLimitPerTransaction: 0,\n }\n\n let shouldUpdate = false\n try {\n shouldUpdate = await shouldUpdateSessionKey({\n accountContract,\n sessionKeyAddress: signerAddress,\n newPermissions: permissions,\n })\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED,\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n\n if (shouldUpdate) {\n try {\n const tx = addSessionKey({\n contract: accountContract,\n account: managedAccount,\n sessionKeyAddress: signerAddress,\n permissions,\n })\n const result = await sendTransaction({ account: managedAccount, transaction: tx })\n await waitForPublishReceipt(result.transactionHash as `0x${string}`)\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED,\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n }\n\n let active = false\n try {\n active = await readIsActiveSigner(managedAddress as Address, signerAddress as Address)\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED,\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n\n if (!active) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED,\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n )\n }\n}\n","import type { Account } from 'thirdweb/wallets'\nimport { optimismSepolia } from 'thirdweb/chains'\nimport { getPublishConfig } from '../config'\nimport { isManagedAccountPublishError } from '../errors'\nimport { ensureEip7702ModularAccountReady } from './ensureEip7702ModularAccountReady'\nimport { ensureManagedAccountEasConfigured } from './ensureManagedAccountEasConfigured'\nimport { ensureManagedSignerSessionKey } from './ensureManagedSignerSessionKey'\nimport { getClient, getModularAccountWallet } from './thirdweb'\n\n/**\n * One-time modular publish bootstrap before `multiPublish`:\n * session signer on managed account → EAS pointer → optional EIP-7702 fallback.\n */\nexport async function ensureModularPublishBootstrap(managedAddress: string): Promise<Account> {\n const modularAccountWallet = getModularAccountWallet()\n await modularAccountWallet.autoConnect({ client: getClient(), chain: optimismSepolia })\n const modularAccount = modularAccountWallet.getAccount()\n if (!modularAccount) {\n throw new Error('Failed to get modular account')\n }\n\n try {\n await ensureManagedSignerSessionKey({\n managedAddress,\n signerAddress: modularAccount.address,\n })\n } catch (cause) {\n if (!getPublishConfig().autoDeployEip7702ModularAccount) {\n throw cause\n }\n if (!isManagedAccountPublishError(cause)) {\n throw cause\n }\n await ensureEip7702ModularAccountReady()\n }\n\n await ensureManagedAccountEasConfigured(managedAddress, (await import('./adapters/thirdwebAccount')).fromThirdwebAccount(modularAccount))\n return modularAccount\n}\n"],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { X as t, et as n, g as r, nt as i, o as a, t as o, tt as s } from "./chainConfig-CfVGYAsY.js";
3
+ import { a as c, n as l, r as u } from "./errors-Du3LNbJN.js";
4
+ import { N as d, P as f, v as p } from "./publishAuthorization-DEriY_jm.js";
5
+ import { t as m } from "./publishThirdwebClient-DroRrOFQ.js";
6
+ import { deploySmartAccount as h, getContract as g, sendTransaction as _ } from "thirdweb";
7
+ import { addSessionKey as v, shouldUpdateSessionKey as y } from "thirdweb/extensions/erc4337";
8
+ //#region src/helpers/ensureEip7702ModularAccountReady.ts
9
+ var b = "Modular (EIP-7702) wallet is not connected. Sign in with the same method and try again.", x = () => `Your modular account is not upgraded to an EIP-7702 smart account on ${o()} yet. Enable autoDeployEip7702ModularAccount in publish config or complete wallet setup, then retry.`, S = () => `Automatic EIP-7702 smart account setup failed on ${o()}. Retry or reconnect your wallet.`, C = "EIP-7702 upgrade was sent but on-chain bytecode was not detected yet. Wait a moment and retry.", w = 5;
10
+ async function T() {
11
+ let { autoDeployEip7702ModularAccount: e } = a(), t = f();
12
+ await t.autoConnect({
13
+ client: m(),
14
+ chain: r()
15
+ });
16
+ let i = t.getAccount();
17
+ if (!i) throw new l(b, "EIP7702_MODULAR_ACCOUNT_UNAVAILABLE");
18
+ let o = m(), c = g({
19
+ client: o,
20
+ chain: r(),
21
+ address: i.address
22
+ });
23
+ if (!await n(i.address)) {
24
+ if (!e) throw new l(x(), "EIP7702_MODULAR_NOT_UPGRADED", i.address);
25
+ try {
26
+ await h({
27
+ smartAccount: i,
28
+ chain: r(),
29
+ client: o,
30
+ accountContract: c
31
+ });
32
+ } catch (e) {
33
+ if (await s(i.address, w)) return;
34
+ throw new l(S(), "EIP7702_MODULAR_DEPLOY_FAILED", i.address, e);
35
+ }
36
+ if (!await s(i.address, w)) throw new l(C, "EIP7702_MODULAR_NOT_CONFIRMED", i.address);
37
+ }
38
+ }
39
+ //#endregion
40
+ //#region src/helpers/defaultApprovedTargetsForModularPublish.ts
41
+ function E(e) {
42
+ let t = /* @__PURE__ */ new Set();
43
+ for (let n of e) {
44
+ let e = n.trim().toLowerCase();
45
+ e.startsWith("0x") && e.length === 42 && t.add(e);
46
+ }
47
+ return [...t].sort().map((e) => e);
48
+ }
49
+ function D(e) {
50
+ let t = a(), n = [e, t.easContractAddress];
51
+ return t.modularAccountModuleContract?.trim() && n.push(t.modularAccountModuleContract.trim()), E(n);
52
+ }
53
+ //#endregion
54
+ //#region src/helpers/ensureManagedSignerSessionKey.ts
55
+ var O = () => `Could not connect the managed publishing account to authorize the modular signer on ${o()}. Reconnect and try again.`, k = () => `Could not authorize the modular wallet as a session signer on your publishing account on ${o()}.`;
56
+ async function A(e) {
57
+ let { managedAddress: n, signerAddress: a } = e, o = d();
58
+ await o.autoConnect({
59
+ client: m(),
60
+ chain: r()
61
+ });
62
+ let s = o.getAccount();
63
+ if (!s) throw new u(O(), "MODULAR_SIGNER_ACTIVATION_FAILED", n);
64
+ let c = g({
65
+ client: m(),
66
+ chain: r(),
67
+ address: n
68
+ }), l = {
69
+ approvedTargets: D(n),
70
+ nativeTokenLimitPerTransaction: 0
71
+ }, f = !1;
72
+ try {
73
+ f = await y({
74
+ accountContract: c,
75
+ sessionKeyAddress: a,
76
+ newPermissions: l
77
+ });
78
+ } catch (e) {
79
+ throw new u(k(), "MODULAR_SIGNER_ACTIVATION_FAILED", n, e);
80
+ }
81
+ if (f) try {
82
+ let e = v({
83
+ contract: c,
84
+ account: s,
85
+ sessionKeyAddress: a,
86
+ permissions: l
87
+ }), t = await _({
88
+ account: s,
89
+ transaction: e
90
+ });
91
+ await i(t.transactionHash);
92
+ } catch (e) {
93
+ throw new u(k(), "MODULAR_SIGNER_ACTIVATION_FAILED", n, e);
94
+ }
95
+ let p = !1;
96
+ try {
97
+ p = await t(n, a);
98
+ } catch (e) {
99
+ throw new u(k(), "MODULAR_SIGNER_ACTIVATION_FAILED", n, e);
100
+ }
101
+ if (!p) throw new u(k(), "MODULAR_SIGNER_ACTIVATION_FAILED", n);
102
+ }
103
+ //#endregion
104
+ //#region src/helpers/ensureModularPublishBootstrap.ts
105
+ var j = /* @__PURE__ */ e({ ensureModularPublishBootstrap: () => M });
106
+ async function M(e) {
107
+ let t = f();
108
+ await t.autoConnect({
109
+ client: m(),
110
+ chain: r()
111
+ });
112
+ let n = t.getAccount();
113
+ if (!n) throw Error("Failed to get modular account");
114
+ try {
115
+ await A({
116
+ managedAddress: e,
117
+ signerAddress: n.address
118
+ });
119
+ } catch (e) {
120
+ if (!a().autoDeployEip7702ModularAccount || !c(e)) throw e;
121
+ await T();
122
+ }
123
+ return await p(e, (await import("./chainConfig-CfVGYAsY.js").then((e) => e.h)).fromThirdwebAccount(n)), n;
124
+ }
125
+ //#endregion
126
+ export { T as a, D as i, j as n, A as r, M as t };
127
+
128
+ //# sourceMappingURL=ensureModularPublishBootstrap-CcU-hXll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureModularPublishBootstrap-CcU-hXll.js","names":[],"sources":["../src/helpers/ensureEip7702ModularAccountReady.ts","../src/helpers/defaultApprovedTargetsForModularPublish.ts","../src/helpers/ensureManagedSignerSessionKey.ts","../src/helpers/ensureModularPublishBootstrap.ts"],"sourcesContent":["import { deploySmartAccount, getContract } from 'thirdweb'\nimport { getPublishConfig } from '../config'\nimport { Eip7702ModularAccountPublishError } from '../errors'\nimport { isContractDeployed, pollSmartWalletDeployed } from './chainClient'\nimport { getClient, getModularAccountWallet } from './thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\nimport { getPublishChainName } from './chainConfig'\n\nconst MSG_NO_ACCOUNT =\n 'Modular (EIP-7702) wallet is not connected. Sign in with the same method and try again.'\nconst MSG_NOT_UPGRADED = () =>\n `Your modular account is not upgraded to an EIP-7702 smart account on ${getPublishChainName()} yet. Enable autoDeployEip7702ModularAccount in publish config or complete wallet setup, then retry.`\nconst MSG_DEPLOY_FAILED = () =>\n `Automatic EIP-7702 smart account setup failed on ${getPublishChainName()}. Retry or reconnect your wallet.`\nconst MSG_NOT_CONFIRMED =\n 'EIP-7702 upgrade was sent but on-chain bytecode was not detected yet. Wait a moment and retry.'\n\nconst DEPLOY_POLL_ATTEMPTS = 5\n\n/**\n * Ensures the Thirdweb in-app modular wallet (EIP-7702) has non-empty bytecode at its address\n * on the publish chain. deploySmartAccount remains Thirdweb; bytecode checks use viem.\n */\nexport async function ensureEip7702ModularAccountReady(): Promise<void> {\n const { autoDeployEip7702ModularAccount } = getPublishConfig()\n const modularAccountWallet = getModularAccountWallet()\n await modularAccountWallet.autoConnect({ client: getClient(), chain: getPublishThirdwebChain() })\n const modularAccount = modularAccountWallet.getAccount()\n if (!modularAccount) {\n throw new Eip7702ModularAccountPublishError(MSG_NO_ACCOUNT, 'EIP7702_MODULAR_ACCOUNT_UNAVAILABLE')\n }\n\n const client = getClient()\n const accountContract = getContract({\n client,\n chain: getPublishThirdwebChain(),\n address: modularAccount.address,\n })\n\n if (await isContractDeployed(modularAccount.address)) {\n return\n }\n\n if (!autoDeployEip7702ModularAccount) {\n throw new Eip7702ModularAccountPublishError(\n MSG_NOT_UPGRADED(),\n 'EIP7702_MODULAR_NOT_UPGRADED',\n modularAccount.address,\n )\n }\n\n try {\n await deploySmartAccount({\n smartAccount: modularAccount,\n chain: getPublishThirdwebChain(),\n client,\n accountContract,\n })\n } catch (cause) {\n if (await pollSmartWalletDeployed(modularAccount.address, DEPLOY_POLL_ATTEMPTS)) {\n return\n }\n throw new Eip7702ModularAccountPublishError(\n MSG_DEPLOY_FAILED(),\n 'EIP7702_MODULAR_DEPLOY_FAILED',\n modularAccount.address,\n cause,\n )\n }\n\n if (!(await pollSmartWalletDeployed(modularAccount.address, DEPLOY_POLL_ATTEMPTS))) {\n throw new Eip7702ModularAccountPublishError(\n MSG_NOT_CONFIRMED,\n 'EIP7702_MODULAR_NOT_CONFIRMED',\n modularAccount.address,\n )\n }\n}\n","import { getPublishConfig } from '../config'\n\nfunction uniqueAddressesLower(addresses: string[]): `0x${string}`[] {\n const set = new Set<string>()\n for (const a of addresses) {\n const t = a.trim().toLowerCase()\n if (t.startsWith('0x') && t.length === 42) set.add(t)\n }\n return [...set].sort().map((x) => x as `0x${string}`)\n}\n\n/** Allowlisted call targets for modular session signers: managed account, EAS, optional executor module. */\nexport function defaultApprovedTargetsForModularPublish(managedAddress: string): `0x${string}`[] {\n const cfg = getPublishConfig()\n const extra: string[] = [managedAddress, cfg.easContractAddress]\n if (cfg.modularAccountModuleContract?.trim()) {\n extra.push(cfg.modularAccountModuleContract.trim())\n }\n return uniqueAddressesLower(extra)\n}\n","import { getContract, sendTransaction } from 'thirdweb'\nimport { addSessionKey, shouldUpdateSessionKey } from 'thirdweb/extensions/erc4337'\nimport type { Address } from 'viem'\nimport { ManagedAccountPublishError } from '../errors'\nimport { waitForPublishReceipt } from './chainClient'\nimport { readIsActiveSigner } from './contracts'\nimport { defaultApprovedTargetsForModularPublish } from './defaultApprovedTargetsForModularPublish'\nimport { getClient, getManagedAccountWallet } from './thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\nimport { getPublishChainName } from './chainConfig'\n\nconst MSG_UNAVAILABLE = () =>\n `Could not connect the managed publishing account to authorize the modular signer on ${getPublishChainName()}. Reconnect and try again.`\nconst MSG_ACTIVATION_FAILED = () =>\n `Could not authorize the modular wallet as a session signer on your publishing account on ${getPublishChainName()}.`\n\n/**\n * Ensures the modular (EIP-7702) wallet is an active session signer on the ManagedAccount.\n * If permissions are missing or stale, sends `addSessionKey` signed by the managed EIP-4337 wallet.\n * Session-key AA extensions remain on Thirdweb; verification uses viem.\n */\nexport async function ensureManagedSignerSessionKey(params: {\n managedAddress: string\n signerAddress: string\n}): Promise<void> {\n const { managedAddress, signerAddress } = params\n const managedWallet = getManagedAccountWallet()\n await managedWallet.autoConnect({ client: getClient(), chain: getPublishThirdwebChain() })\n const managedAccount = managedWallet.getAccount()\n if (!managedAccount) {\n throw new ManagedAccountPublishError(\n MSG_UNAVAILABLE(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n )\n }\n\n const accountContract = getContract({\n client: getClient(),\n chain: getPublishThirdwebChain(),\n address: managedAddress,\n })\n const permissions = {\n approvedTargets: defaultApprovedTargetsForModularPublish(managedAddress),\n nativeTokenLimitPerTransaction: 0,\n }\n\n let shouldUpdate = false\n try {\n shouldUpdate = await shouldUpdateSessionKey({\n accountContract,\n sessionKeyAddress: signerAddress,\n newPermissions: permissions,\n })\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n\n if (shouldUpdate) {\n try {\n const tx = addSessionKey({\n contract: accountContract,\n account: managedAccount,\n sessionKeyAddress: signerAddress,\n permissions,\n })\n const result = await sendTransaction({ account: managedAccount, transaction: tx })\n await waitForPublishReceipt(result.transactionHash as `0x${string}`)\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n }\n\n let active = false\n try {\n active = await readIsActiveSigner(managedAddress as Address, signerAddress as Address)\n } catch (cause) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n cause,\n )\n }\n\n if (!active) {\n throw new ManagedAccountPublishError(\n MSG_ACTIVATION_FAILED(),\n 'MODULAR_SIGNER_ACTIVATION_FAILED',\n managedAddress,\n )\n }\n}\n","import type { Account } from 'thirdweb/wallets'\nimport { getPublishConfig } from '../config'\nimport { isManagedAccountPublishError } from '../errors'\nimport { ensureEip7702ModularAccountReady } from './ensureEip7702ModularAccountReady'\nimport { ensureManagedAccountEasConfigured } from './ensureManagedAccountEasConfigured'\nimport { ensureManagedSignerSessionKey } from './ensureManagedSignerSessionKey'\nimport { getClient, getModularAccountWallet } from './thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\n\n/**\n * One-time modular publish bootstrap before `multiPublish`:\n * session signer on managed account → EAS pointer → optional EIP-7702 fallback.\n */\nexport async function ensureModularPublishBootstrap(managedAddress: string): Promise<Account> {\n const modularAccountWallet = getModularAccountWallet()\n await modularAccountWallet.autoConnect({ client: getClient(), chain: getPublishThirdwebChain() })\n const modularAccount = modularAccountWallet.getAccount()\n if (!modularAccount) {\n throw new Error('Failed to get modular account')\n }\n\n try {\n await ensureManagedSignerSessionKey({\n managedAddress,\n signerAddress: modularAccount.address,\n })\n } catch (cause) {\n if (!getPublishConfig().autoDeployEip7702ModularAccount) {\n throw cause\n }\n if (!isManagedAccountPublishError(cause)) {\n throw cause\n }\n await ensureEip7702ModularAccountReady()\n }\n\n await ensureManagedAccountEasConfigured(managedAddress, (await import('./adapters/thirdwebAccount')).fromThirdwebAccount(modularAccount))\n return modularAccount\n}\n"],"mappings":"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"}