@dev.sail.money/sailor 1.3.0-221 → 1.3.0-223

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 (132) hide show
  1. package/AGENTS.md +6 -6
  2. package/README.md +16 -10
  3. package/package.json +1 -1
  4. package/packages/cli/dist/index.cjs +735 -317
  5. package/packages/cli/dist/server.cjs +166 -123
  6. package/packages/sdk/README.md +1 -1
  7. package/packages/sdk/dist/abis/SailKernel.d.ts +42 -0
  8. package/packages/sdk/dist/abis/SailKernel.d.ts.map +1 -1
  9. package/packages/sdk/dist/abis/SailKernel.js +34 -0
  10. package/packages/sdk/dist/abis/SailKernel.js.map +1 -1
  11. package/packages/sdk/dist/chains.d.ts +0 -7
  12. package/packages/sdk/dist/chains.d.ts.map +1 -1
  13. package/packages/sdk/dist/chains.js +81 -32
  14. package/packages/sdk/dist/chains.js.map +1 -1
  15. package/packages/sdk/dist/client.d.ts +1 -1
  16. package/packages/sdk/dist/client.d.ts.map +1 -1
  17. package/packages/sdk/dist/client.js +137 -16
  18. package/packages/sdk/dist/client.js.map +1 -1
  19. package/packages/sdk/dist/deployments.d.ts +6 -4
  20. package/packages/sdk/dist/deployments.d.ts.map +1 -1
  21. package/packages/sdk/dist/deployments.js +120 -118
  22. package/packages/sdk/dist/deployments.js.map +1 -1
  23. package/packages/sdk/dist/eip712.d.ts +84 -0
  24. package/packages/sdk/dist/eip712.d.ts.map +1 -1
  25. package/packages/sdk/dist/eip712.js +148 -0
  26. package/packages/sdk/dist/eip712.js.map +1 -1
  27. package/packages/sdk/dist/index.d.ts +2 -2
  28. package/packages/sdk/dist/index.d.ts.map +1 -1
  29. package/packages/sdk/dist/index.js +2 -2
  30. package/packages/sdk/dist/index.js.map +1 -1
  31. package/packages/sdk/dist/intelligence.d.ts +1 -1
  32. package/packages/sdk/dist/intelligence.js +1 -1
  33. package/packages/sdk/dist/safe.d.ts +49 -0
  34. package/packages/sdk/dist/safe.d.ts.map +1 -1
  35. package/packages/sdk/dist/safe.js +74 -0
  36. package/packages/sdk/dist/safe.js.map +1 -1
  37. package/packages/sdk/package.json +4 -0
  38. package/packages/ui/dist/assets/{add-BX5reKtK.js → add-DLYFRKuI.js} +1 -1
  39. package/packages/ui/dist/assets/{all-wallets-IZ3PlVF-.js → all-wallets-Dz5SZj5e.js} +1 -1
  40. package/packages/ui/dist/assets/{app-store-ARgRdMdF.js → app-store-DCYRFDwY.js} +1 -1
  41. package/packages/ui/dist/assets/{apple-VCaqsI9w.js → apple-BcAi8XTW.js} +1 -1
  42. package/packages/ui/dist/assets/{arrow-bottom-Cwptw8fW.js → arrow-bottom-Bik1zp_1.js} +1 -1
  43. package/packages/ui/dist/assets/{arrow-bottom-circle-h5vFiZ2I.js → arrow-bottom-circle-BSA6CcrO.js} +1 -1
  44. package/packages/ui/dist/assets/{arrow-left-bM1TRcV9.js → arrow-left-07r0E796.js} +1 -1
  45. package/packages/ui/dist/assets/{arrow-right-BYd_N4Jr.js → arrow-right-CW1Ka1mT.js} +1 -1
  46. package/packages/ui/dist/assets/{arrow-top-CLUnwVE2.js → arrow-top-BoAo8_T9.js} +1 -1
  47. package/packages/ui/dist/assets/{bank-6c28yOM9.js → bank-Bpa5anN0.js} +1 -1
  48. package/packages/ui/dist/assets/{basic-CJnbTfSd.js → basic-CbzdfUfs.js} +1 -1
  49. package/packages/ui/dist/assets/{browser-CDKlxM3D.js → browser-B4YQX2Tn.js} +1 -1
  50. package/packages/ui/dist/assets/{card-DQdED02q.js → card-CF8oS4fb.js} +1 -1
  51. package/packages/ui/dist/assets/{ccip-BL7RIPfY.js → ccip-DssR-Uhz.js} +1 -1
  52. package/packages/ui/dist/assets/{checkmark-JoRNVoFV.js → checkmark-BihQ9h3G.js} +1 -1
  53. package/packages/ui/dist/assets/{checkmark-bold-B6bGHVIs.js → checkmark-bold-c5EPMyPR.js} +1 -1
  54. package/packages/ui/dist/assets/{chevron-bottom-BMCelIEu.js → chevron-bottom-Lijs68sl.js} +1 -1
  55. package/packages/ui/dist/assets/{chevron-left-ryPLhHCc.js → chevron-left-Cj7sg_Iw.js} +1 -1
  56. package/packages/ui/dist/assets/{chevron-right-CdDNRv7f.js → chevron-right-CqD-gBdk.js} +1 -1
  57. package/packages/ui/dist/assets/{chevron-top-BxWIjjGk.js → chevron-top-DDShxMva.js} +1 -1
  58. package/packages/ui/dist/assets/{chrome-store-D-fiJ9qJ.js → chrome-store-DSBNmkPw.js} +1 -1
  59. package/packages/ui/dist/assets/{clock-xCPkzwjj.js → clock-CjlvcnX9.js} +1 -1
  60. package/packages/ui/dist/assets/{close-BkqmPpWG.js → close-QhgNd0Xc.js} +1 -1
  61. package/packages/ui/dist/assets/{coinPlaceholder-PIvN9oq_.js → coinPlaceholder-C7TUN8V-.js} +1 -1
  62. package/packages/ui/dist/assets/{compass-CW5kWcxW.js → compass-DrE1sLwt.js} +1 -1
  63. package/packages/ui/dist/assets/{copy-DUZlAQJJ.js → copy-CFx1aksp.js} +1 -1
  64. package/packages/ui/dist/assets/{core-von2c1sc.js → core-CcaMuBIR.js} +3 -3
  65. package/packages/ui/dist/assets/cursor-DXDOwzFz.js +3 -0
  66. package/packages/ui/dist/assets/{cursor-transparent-BUAMB0G1.js → cursor-transparent-DxBdWZi8.js} +1 -1
  67. package/packages/ui/dist/assets/{desktop-BxdlwV8P.js → desktop-B-ATHCGS.js} +1 -1
  68. package/packages/ui/dist/assets/{disconnect-GelNh3mn.js → disconnect-Bvu0LqoD.js} +1 -1
  69. package/packages/ui/dist/assets/{discord-N0jnxkzC.js → discord-DrRGYSx6.js} +1 -1
  70. package/packages/ui/dist/assets/{etherscan-B41u7wF4.js → etherscan-BaQiGNrH.js} +1 -1
  71. package/packages/ui/dist/assets/{events-C9icG2YB.js → events-BYNiBrPy.js} +1 -1
  72. package/packages/ui/dist/assets/{exclamation-triangle-BWJC56FC.js → exclamation-triangle-B3yAGM1Q.js} +1 -1
  73. package/packages/ui/dist/assets/{extension-G6I6oogw.js → extension-CYA4bLg-.js} +1 -1
  74. package/packages/ui/dist/assets/{external-link-BPaGQf4a.js → external-link-D5PwFm0_.js} +1 -1
  75. package/packages/ui/dist/assets/{facebook-47twy32b.js → facebook-CEwgL1NC.js} +1 -1
  76. package/packages/ui/dist/assets/{fallback-BTfJeGjh.js → fallback-B9sp077f.js} +1 -1
  77. package/packages/ui/dist/assets/{farcaster-DYqnqCqs.js → farcaster-Ak6D7Lp_.js} +1 -1
  78. package/packages/ui/dist/assets/{filters-dF6xeJnE.js → filters-CJduAQRB.js} +1 -1
  79. package/packages/ui/dist/assets/{github-DbW4Ihz2.js → github-PLN2sD5Q.js} +1 -1
  80. package/packages/ui/dist/assets/{google-TKm7G8LF.js → google-BRRn9hKY.js} +1 -1
  81. package/packages/ui/dist/assets/{help-circle-CY3qTmsG.js → help-circle-BnvqUg2y.js} +1 -1
  82. package/packages/ui/dist/assets/{id-JpHW4q14.js → id-CJlrhYxX.js} +1 -1
  83. package/packages/ui/dist/assets/{image-Dip2fG98.js → image-CPduqsY3.js} +1 -1
  84. package/packages/ui/dist/assets/index-BGmLv6wn.js +1789 -0
  85. package/packages/ui/dist/assets/{index-C4_cA5XW.js → index-Bp21-hUb.js} +1 -1
  86. package/packages/ui/dist/assets/{index-CaDN0gL4.js → index-C0GUKQXc.js} +1 -1
  87. package/packages/ui/dist/assets/{index-BGJ_8fMk.js → index-D-OgqpEg.js} +1 -1
  88. package/packages/ui/dist/assets/{index-q0mGElxZ.js → index-Dyr25y7I.js} +3 -3
  89. package/packages/ui/dist/assets/{index-Bq3PAopp.js → index-vEKHRoHD.js} +1 -1
  90. package/packages/ui/dist/assets/{index.es-BaCKS_tW.js → index.es-Dks2goS7.js} +4 -4
  91. package/packages/ui/dist/assets/{info-B1enFsqh.js → info-CGNHPKFR.js} +1 -1
  92. package/packages/ui/dist/assets/{info-circle-D4j3FISs.js → info-circle-D8mpP6LN.js} +1 -1
  93. package/packages/ui/dist/assets/{lightbulb-DZbKr-vS.js → lightbulb-BWGaqAI3.js} +1 -1
  94. package/packages/ui/dist/assets/{mail-D-TO_uVQ.js → mail-BcfubTQ2.js} +1 -1
  95. package/packages/ui/dist/assets/{metamask-sdk-DljW3QD1.js → metamask-sdk-B1i24ALe.js} +1 -1
  96. package/packages/ui/dist/assets/{mobile-Bkmwzav2.js → mobile-CglLmMeZ.js} +1 -1
  97. package/packages/ui/dist/assets/{more-D1_I_jiB.js → more-OgWHs8eZ.js} +1 -1
  98. package/packages/ui/dist/assets/{network-placeholder-DUaFjoXh.js → network-placeholder-BUhDcMI_.js} +1 -1
  99. package/packages/ui/dist/assets/{nftPlaceholder-Cc0iUryh.js → nftPlaceholder-wxKy5Q-x.js} +1 -1
  100. package/packages/ui/dist/assets/{off-BvX71sse.js → off-DxJM1N51.js} +1 -1
  101. package/packages/ui/dist/assets/{parseSignature-BAS-wKoj.js → parseSignature-D838ybCF.js} +1 -1
  102. package/packages/ui/dist/assets/{play-store-XzLbtbTd.js → play-store-jm12tVwP.js} +1 -1
  103. package/packages/ui/dist/assets/{plus-B77_RmYR.js → plus--zRIsRuA.js} +1 -1
  104. package/packages/ui/dist/assets/{qr-code-BNeIhB1d.js → qr-code-DhBJbVz8.js} +1 -1
  105. package/packages/ui/dist/assets/{recycle-horizontal-B9sX-yty.js → recycle-horizontal-1zQ5U9as.js} +1 -1
  106. package/packages/ui/dist/assets/{refresh-BWRygnjm.js → refresh-mqmMmKBD.js} +1 -1
  107. package/packages/ui/dist/assets/{reown-logo-DCAEsGFm.js → reown-logo-RZHJRVcN.js} +1 -1
  108. package/packages/ui/dist/assets/{search-ZXIqrawS.js → search-Bd45qI2U.js} +1 -1
  109. package/packages/ui/dist/assets/{secp256k1-Doz05h4g.js → secp256k1-Uhtu7xK-.js} +1 -1
  110. package/packages/ui/dist/assets/{send-BQcO0jNC.js → send-4lxASBOR.js} +1 -1
  111. package/packages/ui/dist/assets/{swapHorizontal-4yZEzz2K.js → swapHorizontal-Cj2JRLJS.js} +1 -1
  112. package/packages/ui/dist/assets/{swapHorizontalBold-DxBKu3sl.js → swapHorizontalBold-Byv9z2H0.js} +1 -1
  113. package/packages/ui/dist/assets/{swapHorizontalMedium-DAQYJ2JK.js → swapHorizontalMedium-BadlZnn_.js} +1 -1
  114. package/packages/ui/dist/assets/{swapHorizontalRoundedBold-CUlZzFJ6.js → swapHorizontalRoundedBold-Dl20h9DP.js} +1 -1
  115. package/packages/ui/dist/assets/{swapVertical-CjWHAaDM.js → swapVertical-DoFYn8T-.js} +1 -1
  116. package/packages/ui/dist/assets/{telegram-JBeabiJP.js → telegram-DKM_HViT.js} +1 -1
  117. package/packages/ui/dist/assets/{three-dots-D3R8OjSx.js → three-dots-CBLRiosA.js} +1 -1
  118. package/packages/ui/dist/assets/{twitch-1f9z7xVO.js → twitch-Dj3xBpb1.js} +1 -1
  119. package/packages/ui/dist/assets/{twitterIcon-BW7n2xnp.js → twitterIcon-D-wqABHa.js} +1 -1
  120. package/packages/ui/dist/assets/{verify-Cs5owI38.js → verify-BYs2pfC2.js} +1 -1
  121. package/packages/ui/dist/assets/{verify-filled-Ci5sx5qS.js → verify-filled-zJG9VG5w.js} +1 -1
  122. package/packages/ui/dist/assets/{w3m-modal-DnWtss8u.js → w3m-modal-sbOUP95Y.js} +1 -1
  123. package/packages/ui/dist/assets/{wallet-MaGNqaW-.js → wallet-CMl9HrCE.js} +1 -1
  124. package/packages/ui/dist/assets/{wallet-placeholder-kTOy12_L.js → wallet-placeholder-BneM1wji.js} +1 -1
  125. package/packages/ui/dist/assets/{walletconnect-CyuP92jg.js → walletconnect-DVz3u0az.js} +1 -1
  126. package/packages/ui/dist/assets/{warning-circle-BImUCdpG.js → warning-circle-B_P5OBud.js} +1 -1
  127. package/packages/ui/dist/assets/{x-II45JHpV.js → x-CU4y53M6.js} +1 -1
  128. package/packages/ui/dist/index.html +1 -1
  129. package/templates/default/.agents/skills/sail-mandates/SKILL.md +1 -1
  130. package/templates/default/.agents/skills/sail-onboarding/SKILL.md +1 -1
  131. package/packages/ui/dist/assets/cursor-BzRVY7BD.js +0 -3
  132. package/packages/ui/dist/assets/index-DLElIcBr.js +0 -1789
@@ -35211,16 +35211,18 @@ var {
35211
35211
  } = import_index.default;
35212
35212
 
35213
35213
  // ../sdk/dist/chains.js
35214
+ var CREATE2_KERNEL = "0x38b508756c976e876EFF05a29E731A4d348BA6ED";
35215
+ var CREATE2_MANDATE_FACTORY = "0x6d2C802ffa0d9A8Ed69A5Bf22c1b63ccB566B8Fc";
35216
+ var CREATE2_GOVERNANCE = "0x4315B37cA4A315A7042af1Fcb37F8436f4D24356";
35214
35217
  var chains = {
35215
35218
  // Ethereum mainnet
35216
35219
  1: {
35217
35220
  chainId: 1,
35218
35221
  name: "Ethereum",
35219
35222
  rpcEnvVar: "ETH_MAINNET_RPC_URL",
35220
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33).
35221
- kernel: "0x02ABC18B65A328de2e749F56ba79ACF2718a6659",
35222
- mandateFactory: "0x14EDd6c2a56EfC0d71E215ab13094B9AF90543d2",
35223
- governance: "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC",
35223
+ kernel: CREATE2_KERNEL,
35224
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35225
+ governance: CREATE2_GOVERNANCE,
35224
35226
  dispatchModel: "selective",
35225
35227
  protocols: {}
35226
35228
  },
@@ -35229,11 +35231,9 @@ var chains = {
35229
35231
  chainId: 8453,
35230
35232
  name: "Base",
35231
35233
  rpcEnvVar: "BASE_RPC_URL",
35232
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33).
35233
- // Supersedes 0x6319d3dfDDe3804ba93D65752b00c52bFb05a1ab (SAIL-405).
35234
- kernel: "0x02ABC18B65A328de2e749F56ba79ACF2718a6659",
35235
- mandateFactory: "0x14EDd6c2a56EfC0d71E215ab13094B9AF90543d2",
35236
- governance: "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC",
35234
+ kernel: CREATE2_KERNEL,
35235
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35236
+ governance: CREATE2_GOVERNANCE,
35237
35237
  dispatchModel: "selective",
35238
35238
  protocols: {}
35239
35239
  },
@@ -35242,11 +35242,20 @@ var chains = {
35242
35242
  chainId: 42161,
35243
35243
  name: "Arbitrum",
35244
35244
  rpcEnvVar: "ARBITRUM_RPC_URL",
35245
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33).
35246
- // Supersedes 0x2716B12832DED0EF5688519c5Fe069EFc0374E02 (SAIL-405).
35247
- kernel: "0x02ABC18B65A328de2e749F56ba79ACF2718a6659",
35248
- mandateFactory: "0x14EDd6c2a56EfC0d71E215ab13094B9AF90543d2",
35249
- governance: "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC",
35245
+ kernel: CREATE2_KERNEL,
35246
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35247
+ governance: CREATE2_GOVERNANCE,
35248
+ dispatchModel: "selective",
35249
+ protocols: {}
35250
+ },
35251
+ // Optimism mainnet
35252
+ 10: {
35253
+ chainId: 10,
35254
+ name: "Optimism",
35255
+ rpcEnvVar: "OPTIMISM_RPC_URL",
35256
+ kernel: CREATE2_KERNEL,
35257
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35258
+ governance: CREATE2_GOVERNANCE,
35250
35259
  dispatchModel: "selective",
35251
35260
  protocols: {}
35252
35261
  },
@@ -35255,11 +35264,53 @@ var chains = {
35255
35264
  chainId: 130,
35256
35265
  name: "Unichain",
35257
35266
  rpcEnvVar: "UNICHAIN_RPC_URL",
35258
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33).
35259
- // Supersedes 0xD985029960a9B7C2E7E38e102C448b8b8539B156 (SAIL-406).
35260
- kernel: "0x02ABC18B65A328de2e749F56ba79ACF2718a6659",
35261
- mandateFactory: "0x14EDd6c2a56EfC0d71E215ab13094B9AF90543d2",
35262
- governance: "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC",
35267
+ kernel: CREATE2_KERNEL,
35268
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35269
+ governance: CREATE2_GOVERNANCE,
35270
+ dispatchModel: "selective",
35271
+ protocols: {}
35272
+ },
35273
+ // BSC mainnet
35274
+ 56: {
35275
+ chainId: 56,
35276
+ name: "BSC",
35277
+ rpcEnvVar: "BSC_RPC_URL",
35278
+ kernel: CREATE2_KERNEL,
35279
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35280
+ governance: CREATE2_GOVERNANCE,
35281
+ dispatchModel: "selective",
35282
+ protocols: {}
35283
+ },
35284
+ // World Chain mainnet
35285
+ 480: {
35286
+ chainId: 480,
35287
+ name: "World Chain",
35288
+ rpcEnvVar: "WORLD_RPC_URL",
35289
+ kernel: CREATE2_KERNEL,
35290
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35291
+ governance: CREATE2_GOVERNANCE,
35292
+ dispatchModel: "selective",
35293
+ protocols: {}
35294
+ },
35295
+ // HyperEVM mainnet
35296
+ 999: {
35297
+ chainId: 999,
35298
+ name: "HyperEVM",
35299
+ rpcEnvVar: "HYPEREVM_RPC_URL",
35300
+ kernel: CREATE2_KERNEL,
35301
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35302
+ governance: CREATE2_GOVERNANCE,
35303
+ dispatchModel: "selective",
35304
+ protocols: {}
35305
+ },
35306
+ // MegaETH mainnet
35307
+ 4326: {
35308
+ chainId: 4326,
35309
+ name: "MegaETH",
35310
+ rpcEnvVar: "MEGAETH_RPC_URL",
35311
+ kernel: CREATE2_KERNEL,
35312
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35313
+ governance: CREATE2_GOVERNANCE,
35263
35314
  dispatchModel: "selective",
35264
35315
  protocols: {}
35265
35316
  },
@@ -35268,11 +35319,9 @@ var chains = {
35268
35319
  chainId: 84532,
35269
35320
  name: "Base Sepolia",
35270
35321
  rpcEnvVar: "BASE_SEPOLIA_RPC_URL",
35271
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33).
35272
- // Supersedes 0xf1D0F4C9893612627409948BAa9d82a01a373799 (SAIL-405).
35273
- kernel: "0x02ABC18B65A328de2e749F56ba79ACF2718a6659",
35274
- mandateFactory: "0x14EDd6c2a56EfC0d71E215ab13094B9AF90543d2",
35275
- governance: "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC",
35322
+ kernel: CREATE2_KERNEL,
35323
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35324
+ governance: CREATE2_GOVERNANCE,
35276
35325
  dispatchModel: "selective",
35277
35326
  protocols: {}
35278
35327
  },
@@ -35281,10 +35330,9 @@ var chains = {
35281
35330
  chainId: 11155111,
35282
35331
  name: "Eth Sepolia",
35283
35332
  rpcEnvVar: "SEPOLIA_RPC_URL",
35284
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33).
35285
- kernel: "0x02ABC18B65A328de2e749F56ba79ACF2718a6659",
35286
- mandateFactory: "0x14EDd6c2a56EfC0d71E215ab13094B9AF90543d2",
35287
- governance: "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC",
35333
+ kernel: CREATE2_KERNEL,
35334
+ mandateFactory: CREATE2_MANDATE_FACTORY,
35335
+ governance: CREATE2_GOVERNANCE,
35288
35336
  dispatchModel: "selective",
35289
35337
  protocols: {}
35290
35338
  }
@@ -35292,7 +35340,7 @@ var chains = {
35292
35340
  function getChain(chainId) {
35293
35341
  const config = chains[chainId];
35294
35342
  if (!config) {
35295
- throw new Error(`Chain ${chainId} is not supported. Supported chains: 1 (Ethereum), 8453 (Base), 42161 (Arbitrum), 130 (Unichain), 84532 (Base Sepolia), 11155111 (Eth Sepolia).`);
35343
+ throw new Error(`Chain ${chainId} is not supported. Supported chains: 1 (Ethereum), 8453 (Base), 42161 (Arbitrum), 10 (Optimism), 130 (Unichain), 56 (BSC), 480 (World Chain), 999 (HyperEVM), 4326 (MegaETH), 84532 (Base Sepolia), 11155111 (Eth Sepolia).`);
35296
35344
  }
35297
35345
  return config;
35298
35346
  }
@@ -35319,6 +35367,10 @@ var SailKernelAbi = [
35319
35367
  ],
35320
35368
  outputs: [{ name: "account", type: "address" }]
35321
35369
  },
35370
+ // Post-#53: two-step registration. Requires msg.sender == the Safe (trusted-proxy
35371
+ // codehash + trusted-singleton pin) and a Safe owner signature over the
35372
+ // RegisterAccount EIP-712 digest (verified via checkSignatures). Must be submitted
35373
+ // through the Safe's execTransaction, not the owner EOA. See buildRegisterAccountTypedData.
35322
35374
  {
35323
35375
  type: "function",
35324
35376
  name: "registerAccount",
@@ -35326,7 +35378,10 @@ var SailKernelAbi = [
35326
35378
  inputs: [
35327
35379
  { name: "permissionSigner", type: "address" },
35328
35380
  { name: "manager", type: "address" },
35329
- { name: "feePolicy", type: "address" }
35381
+ { name: "feePolicy", type: "address" },
35382
+ { name: "feeAsset", type: "address" },
35383
+ { name: "deadline", type: "uint256" },
35384
+ { name: "ownerSig", type: "bytes" }
35330
35385
  ],
35331
35386
  outputs: []
35332
35387
  },
@@ -35377,6 +35432,32 @@ var SailKernelAbi = [
35377
35432
  ],
35378
35433
  outputs: []
35379
35434
  },
35435
+ // ── Session kill switch ───────────────────────────────────────────────────
35436
+ // Suspend/resume manager dispatch rights. Both are permissionSigner-signed
35437
+ // (RevokeSession/ActivateSession EIP-712, nonce = signerNonces[account]) and
35438
+ // rotate the manager/batch nonce epochs so any pre-signed dispatch is invalidated.
35439
+ {
35440
+ type: "function",
35441
+ name: "revokeSession",
35442
+ stateMutability: "nonpayable",
35443
+ inputs: [
35444
+ { name: "account", type: "address" },
35445
+ { name: "deadline", type: "uint256" },
35446
+ { name: "sig", type: "bytes" }
35447
+ ],
35448
+ outputs: []
35449
+ },
35450
+ {
35451
+ type: "function",
35452
+ name: "activateSession",
35453
+ stateMutability: "nonpayable",
35454
+ inputs: [
35455
+ { name: "account", type: "address" },
35456
+ { name: "deadline", type: "uint256" },
35457
+ { name: "sig", type: "bytes" }
35458
+ ],
35459
+ outputs: []
35460
+ },
35380
35461
  // ── Manager dispatch ──────────────────────────────────────────────────────
35381
35462
  {
35382
35463
  type: "function",
@@ -35516,6 +35597,7 @@ var SailKernelAbi = [
35516
35597
  { name: "permissionSigner", type: "address" },
35517
35598
  { name: "manager", type: "address" },
35518
35599
  { name: "feePolicy", type: "address" },
35600
+ { name: "feeAsset", type: "address" },
35519
35601
  { name: "sessionActive", type: "bool" }
35520
35602
  ]
35521
35603
  },
@@ -35709,148 +35791,142 @@ async function detectKernelCapabilities(publicClient, kernel, opts) {
35709
35791
  }
35710
35792
 
35711
35793
  // ../sdk/dist/deployments.js
35712
- var CREATE2_KERNEL = "0x02ABC18B65A328de2e749F56ba79ACF2718a6659";
35713
- var CREATE2_GOVERNANCE = "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC";
35714
- var CREATE2_TIMELOCK = "0xE48Ba8DB6d748adafD13155c3590f62e58a77f56";
35794
+ var CREATE2_KERNEL2 = "0x38b508756c976e876EFF05a29E731A4d348BA6ED";
35795
+ var CREATE2_GOVERNANCE2 = "0x4315B37cA4A315A7042af1Fcb37F8436f4D24356";
35796
+ var CREATE2_TIMELOCK = "0xC1E5F9A581D4100Aa949f80204540a33aD97A7b6";
35715
35797
  var CREATE2_SAFE_MODULE_ENABLER = "0x7897Cb53a4be4a2eaAf46D60573C4Fd83b33fE1F";
35716
- var CREATE2_MANDATE_FACTORY = "0x14EDd6c2a56EfC0d71E215ab13094B9AF90543d2";
35717
- var CREATE2_STANDARD_FEE_POLICY = "0xe7B5901b839cFFDEd9D4108A22712C8BfdA1D80D";
35718
- var CREATE2_TREASURY = "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6";
35798
+ var CREATE2_MANDATE_FACTORY2 = "0x6d2C802ffa0d9A8Ed69A5Bf22c1b63ccB566B8Fc";
35799
+ var CREATE2_STANDARD_FEE_POLICY = "0x1087312447C8a2BfA15EB9cE23590E3502DBA04b";
35800
+ var CREATE2_DEPLOYER = "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6";
35801
+ var CREATE2_TREASURY = "0x7b37F85575F1568a37dBA342BC5FE6d393F0872f";
35802
+ var CREATE2_MAX_PERMISSION_FEE_WEI = 10000000000000000n;
35803
+ var CREATE2_TEMPLATES = {
35804
+ swap: "0x35cEEa0db96997Cc3CF3beB42FFa36A499342F7C",
35805
+ swapNoOracle: "0x34Ba96CbEd1f46c88A5265E645DC5fe41662b519",
35806
+ borrow: "0x3e2666051599223cEAb10De55C89A0842857d8AF",
35807
+ deposit: "0xBfB5e13a97b12Ee89d2F2b9B65eCf7e0E371911f",
35808
+ withdraw: "0xF5eF5dda450a130e3020d54f565E830e4a7531f8",
35809
+ transfer: "0xda909a1CC584fb7559Ce4A828b008B473Da095e1",
35810
+ approveAndCallBatch: "0x0535A4D51333484ef583103DAB1a9449756ab732"
35811
+ };
35812
+ var CREATE2_KNOWN_TEMPLATES = [
35813
+ { kind: "SwapPermission", address: CREATE2_TEMPLATES.swap, label: "Swap" },
35814
+ {
35815
+ kind: "SwapPermissionNoOracle",
35816
+ address: CREATE2_TEMPLATES.swapNoOracle,
35817
+ label: "Swap (no oracle)"
35818
+ },
35819
+ { kind: "BorrowPermission", address: CREATE2_TEMPLATES.borrow, label: "Borrow" },
35820
+ { kind: "DepositPermission", address: CREATE2_TEMPLATES.deposit, label: "Deposit" },
35821
+ { kind: "WithdrawPermission", address: CREATE2_TEMPLATES.withdraw, label: "Withdraw" },
35822
+ { kind: "TransferPermission", address: CREATE2_TEMPLATES.transfer, label: "Transfer" },
35823
+ {
35824
+ kind: "ApproveAndCallBatchPermission",
35825
+ address: CREATE2_TEMPLATES.approveAndCallBatch,
35826
+ label: "Approve + call batch"
35827
+ }
35828
+ ];
35829
+ var COMMON_DEPLOYMENT_FIELDS = {
35830
+ deployer: CREATE2_DEPLOYER,
35831
+ governance: CREATE2_GOVERNANCE2,
35832
+ timelock: CREATE2_TIMELOCK,
35833
+ kernel: CREATE2_KERNEL2,
35834
+ mandateFactory: CREATE2_MANDATE_FACTORY2,
35835
+ standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
35836
+ safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
35837
+ treasury: CREATE2_TREASURY,
35838
+ maxPermissionFeeWei: CREATE2_MAX_PERMISSION_FEE_WEI,
35839
+ initialBaseFee: 0n,
35840
+ initialComplexityRate: 0n,
35841
+ dispatchModel: "selective",
35842
+ // The seven launch templates are SHARED multi-tenant ConfigurablePermission instances
35843
+ // (registered by address, configured via configure()), NOT EIP-1167 clone logic. They
35844
+ // belong in knownTemplates only. standaloneTemplates is the clone-implementation registry
35845
+ // (the `impl` arg to MandateFactory.deployAndAttach) — empty until standalone clones deploy.
35846
+ // Populating it with shared templates mislabels them as unaudited community clones in
35847
+ // `sailor mandate templates` and makes capabilities advertise them as deployAndAttach-able.
35848
+ standaloneTemplates: {}
35849
+ };
35850
+ function knownTemplatesFor(chainId) {
35851
+ return CREATE2_KNOWN_TEMPLATES.map((t) => ({ ...t, chainId }));
35852
+ }
35719
35853
  var sailDeployments = {
35720
35854
  // ── Ethereum mainnet ─────────────────────────────────────────────────────────
35721
35855
  1: {
35722
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33).
35723
- // allowlistBootstrapped=true (genesis bootstrap), zero fees, 48h timelock.
35856
+ ...COMMON_DEPLOYMENT_FIELDS,
35724
35857
  chainId: 1,
35725
- blockNumber: 25280925,
35726
- deployer: CREATE2_TREASURY,
35727
- governance: CREATE2_GOVERNANCE,
35728
- timelock: CREATE2_TIMELOCK,
35729
- kernel: CREATE2_KERNEL,
35730
- mandateFactory: CREATE2_MANDATE_FACTORY,
35731
- standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
35732
- safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
35733
- treasury: CREATE2_TREASURY,
35734
- maxPermissionFeeWei: 1000000000000000n,
35735
- initialBaseFee: 0n,
35736
- initialComplexityRate: 0n,
35737
- dispatchModel: "selective",
35738
- knownTemplates: [],
35739
- standaloneTemplates: {}
35858
+ blockNumber: 25432741,
35859
+ knownTemplates: knownTemplatesFor(1)
35740
35860
  },
35741
35861
  // ── Base mainnet ─────────────────────────────────────────────────────────────
35742
35862
  8453: {
35743
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33). Supersedes
35744
- // 0x6319d3dfDDe3804ba93D65752b00c52bFb05a1ab (SAIL-405 redeploy).
35745
- // allowlistBootstrapped=true, zero fees, 48h timelock.
35863
+ ...COMMON_DEPLOYMENT_FIELDS,
35746
35864
  chainId: 8453,
35747
- blockNumber: 47115338,
35748
- deployer: CREATE2_TREASURY,
35749
- governance: CREATE2_GOVERNANCE,
35750
- timelock: CREATE2_TIMELOCK,
35751
- kernel: CREATE2_KERNEL,
35752
- mandateFactory: CREATE2_MANDATE_FACTORY,
35753
- standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
35754
- safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
35755
- treasury: CREATE2_TREASURY,
35756
- maxPermissionFeeWei: 1000000000000000n,
35757
- initialBaseFee: 0n,
35758
- initialComplexityRate: 0n,
35759
- dispatchModel: "selective",
35760
- knownTemplates: [],
35761
- standaloneTemplates: {}
35865
+ blockNumber: 48029413,
35866
+ knownTemplates: knownTemplatesFor(8453)
35762
35867
  },
35763
35868
  // ── Arbitrum mainnet ─────────────────────────────────────────────────────────
35764
35869
  42161: {
35765
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33). Supersedes
35766
- // 0x2716B12832DED0EF5688519c5Fe069EFc0374E02 (SAIL-405 redeploy).
35767
- // allowlistBootstrapped=true, zero fees, 48h timelock.
35870
+ ...COMMON_DEPLOYMENT_FIELDS,
35768
35871
  chainId: 42161,
35769
- blockNumber: 471736462,
35770
- deployer: CREATE2_TREASURY,
35771
- governance: CREATE2_GOVERNANCE,
35772
- timelock: CREATE2_TIMELOCK,
35773
- kernel: CREATE2_KERNEL,
35774
- mandateFactory: CREATE2_MANDATE_FACTORY,
35775
- standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
35776
- safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
35777
- treasury: CREATE2_TREASURY,
35778
- maxPermissionFeeWei: 1000000000000000n,
35779
- initialBaseFee: 0n,
35780
- initialComplexityRate: 0n,
35781
- dispatchModel: "selective",
35782
- knownTemplates: [],
35783
- standaloneTemplates: {}
35872
+ blockNumber: 25432669,
35873
+ knownTemplates: knownTemplatesFor(42161)
35874
+ },
35875
+ // ── Optimism mainnet ─────────────────────────────────────────────────────────
35876
+ 10: {
35877
+ ...COMMON_DEPLOYMENT_FIELDS,
35878
+ chainId: 10,
35879
+ blockNumber: 153625159,
35880
+ knownTemplates: knownTemplatesFor(10)
35784
35881
  },
35785
35882
  // ── Unichain mainnet ─────────────────────────────────────────────────────────
35786
35883
  130: {
35787
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33). Supersedes
35788
- // 0xD985029960a9B7C2E7E38e102C448b8b8539B156 (SAIL-406 deploy).
35789
- // NOTE: knownTemplates and standaloneTemplates from SAIL-406 were deployed
35790
- // against the old kernel 0xD985029... and are now invalid. They must be
35791
- // redeployed against the new kernel 0x02ABC1... and re-populated here.
35884
+ ...COMMON_DEPLOYMENT_FIELDS,
35792
35885
  chainId: 130,
35793
- blockNumber: 50271704,
35794
- deployer: CREATE2_TREASURY,
35795
- governance: CREATE2_GOVERNANCE,
35796
- timelock: CREATE2_TIMELOCK,
35797
- kernel: CREATE2_KERNEL,
35798
- mandateFactory: CREATE2_MANDATE_FACTORY,
35799
- standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
35800
- safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
35801
- treasury: CREATE2_TREASURY,
35802
- maxPermissionFeeWei: 1000000000000000n,
35803
- initialBaseFee: 0n,
35804
- initialComplexityRate: 0n,
35805
- dispatchModel: "selective",
35806
- // Templates cleared: the SAIL-406 shared + standalone templates were deployed
35807
- // against the old kernel (0xD985029...) and are invalid against the new one.
35808
- // Re-populate after redeploying templates against 0x02ABC1...
35809
- knownTemplates: [],
35810
- standaloneTemplates: {}
35886
+ blockNumber: 52100873,
35887
+ knownTemplates: knownTemplatesFor(130)
35888
+ },
35889
+ // ── BSC mainnet ──────────────────────────────────────────────────────────────
35890
+ 56: {
35891
+ ...COMMON_DEPLOYMENT_FIELDS,
35892
+ chainId: 56,
35893
+ blockNumber: 107312662,
35894
+ knownTemplates: knownTemplatesFor(56)
35895
+ },
35896
+ // ── World Chain mainnet ──────────────────────────────────────────────────────
35897
+ 480: {
35898
+ ...COMMON_DEPLOYMENT_FIELDS,
35899
+ chainId: 480,
35900
+ blockNumber: 31756901,
35901
+ knownTemplates: knownTemplatesFor(480)
35902
+ },
35903
+ // ── HyperEVM mainnet ─────────────────────────────────────────────────────────
35904
+ 999: {
35905
+ ...COMMON_DEPLOYMENT_FIELDS,
35906
+ chainId: 999,
35907
+ blockNumber: 39238629,
35908
+ knownTemplates: knownTemplatesFor(999)
35909
+ },
35910
+ // ── MegaETH mainnet ──────────────────────────────────────────────────────────
35911
+ 4326: {
35912
+ ...COMMON_DEPLOYMENT_FIELDS,
35913
+ chainId: 4326,
35914
+ blockNumber: 20056530,
35915
+ knownTemplates: knownTemplatesFor(4326)
35811
35916
  },
35812
35917
  // ── Base Sepolia (testnet) ───────────────────────────────────────────────────
35813
35918
  84532: {
35814
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33). Supersedes
35815
- // 0xf1D0F4C9893612627409948BAa9d82a01a373799 (SAIL-405 redeploy).
35816
- // allowlistBootstrapped=true, zero fees, 48h timelock.
35919
+ ...COMMON_DEPLOYMENT_FIELDS,
35817
35920
  chainId: 84532,
35818
- blockNumber: 42625843,
35819
- deployer: CREATE2_TREASURY,
35820
- governance: CREATE2_GOVERNANCE,
35821
- timelock: CREATE2_TIMELOCK,
35822
- kernel: CREATE2_KERNEL,
35823
- mandateFactory: CREATE2_MANDATE_FACTORY,
35824
- standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
35825
- safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
35826
- treasury: CREATE2_TREASURY,
35827
- maxPermissionFeeWei: 1000000000000000n,
35828
- initialBaseFee: 0n,
35829
- initialComplexityRate: 0n,
35830
- dispatchModel: "selective",
35831
- knownTemplates: [],
35832
- standaloneTemplates: {}
35921
+ blockNumber: 43539604,
35922
+ knownTemplates: knownTemplatesFor(84532)
35833
35923
  },
35834
35924
  // ── Eth Sepolia (testnet) ────────────────────────────────────────────────────
35835
35925
  11155111: {
35836
- // CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33).
35837
- // allowlistBootstrapped=true, zero fees, 48h timelock.
35926
+ ...COMMON_DEPLOYMENT_FIELDS,
35838
35927
  chainId: 11155111,
35839
- blockNumber: 11023571,
35840
- deployer: CREATE2_TREASURY,
35841
- governance: CREATE2_GOVERNANCE,
35842
- timelock: CREATE2_TIMELOCK,
35843
- kernel: CREATE2_KERNEL,
35844
- mandateFactory: CREATE2_MANDATE_FACTORY,
35845
- standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
35846
- safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
35847
- treasury: CREATE2_TREASURY,
35848
- maxPermissionFeeWei: 1000000000000000n,
35849
- initialBaseFee: 0n,
35850
- initialComplexityRate: 0n,
35851
- dispatchModel: "selective",
35852
- knownTemplates: [],
35853
- standaloneTemplates: {}
35928
+ blockNumber: 11174750,
35929
+ knownTemplates: knownTemplatesFor(11155111)
35854
35930
  }
35855
35931
  };
35856
35932
  function getSailDeployment(chainId) {
@@ -35861,6 +35937,219 @@ function getSailDeployment(chainId) {
35861
35937
  return deployment;
35862
35938
  }
35863
35939
 
35940
+ // ../sdk/dist/eip712.js
35941
+ init_esm2();
35942
+ function sailKernelDomain(args) {
35943
+ return {
35944
+ name: "SailKernel",
35945
+ version: "1",
35946
+ chainId: args.chainId,
35947
+ verifyingContract: args.kernel
35948
+ };
35949
+ }
35950
+ var DISPATCH_EIP712_FIELDS = {
35951
+ selective: [
35952
+ { name: "account", type: "address" },
35953
+ { name: "permission", type: "address" },
35954
+ { name: "target", type: "address" },
35955
+ { name: "value", type: "uint256" },
35956
+ { name: "dataHash", type: "bytes32" },
35957
+ { name: "nonce", type: "uint256" },
35958
+ { name: "deadline", type: "uint256" }
35959
+ ],
35960
+ conjunctive: [
35961
+ { name: "account", type: "address" },
35962
+ { name: "target", type: "address" },
35963
+ { name: "value", type: "uint256" },
35964
+ { name: "dataHash", type: "bytes32" },
35965
+ { name: "nonce", type: "uint256" },
35966
+ { name: "deadline", type: "uint256" }
35967
+ ]
35968
+ };
35969
+ var DEFAULT_DISPATCH_DEADLINE_SECS = 600;
35970
+ var MANAGER_NONCES_ABI = [
35971
+ {
35972
+ type: "function",
35973
+ name: "managerNonces",
35974
+ stateMutability: "view",
35975
+ inputs: [{ name: "account", type: "address" }],
35976
+ outputs: [{ type: "uint256" }]
35977
+ }
35978
+ ];
35979
+ async function buildDispatchSignature(params) {
35980
+ const { publicClient, kernel, chainId, account: account2, permission, call: call2, manager } = params;
35981
+ const caps = await detectKernelCapabilities(publicClient, kernel, {
35982
+ chainId
35983
+ });
35984
+ const nonce = params.nonce ?? await publicClient.readContract({
35985
+ address: kernel,
35986
+ abi: MANAGER_NONCES_ABI,
35987
+ functionName: "managerNonces",
35988
+ args: [account2]
35989
+ });
35990
+ const deadline = params.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + DEFAULT_DISPATCH_DEADLINE_SECS);
35991
+ const dataHash = keccak256(call2.data);
35992
+ const selective = caps.dispatchModel === "selective";
35993
+ const message = selective ? { account: account2, permission, target: call2.target, value: call2.value, dataHash, nonce, deadline } : { account: account2, target: call2.target, value: call2.value, dataHash, nonce, deadline };
35994
+ const signature = await manager.signTyped(sailKernelDomain({ chainId, kernel }), {
35995
+ primaryType: "Dispatch",
35996
+ types: {
35997
+ Dispatch: DISPATCH_EIP712_FIELDS[caps.dispatchModel]
35998
+ }
35999
+ }, message);
36000
+ return { signature, nonce, deadline, dispatchModel: caps.dispatchModel };
36001
+ }
36002
+ var REGISTER_PERMISSION_TYPES = {
36003
+ RegisterPermission: [
36004
+ { name: "account", type: "address" },
36005
+ { name: "permission", type: "address" },
36006
+ { name: "nonce", type: "uint256" },
36007
+ { name: "deadline", type: "uint256" }
36008
+ ]
36009
+ };
36010
+ var REGISTER_PERMISSION_TYPES_NO_DEADLINE = {
36011
+ RegisterPermission: [
36012
+ { name: "account", type: "address" },
36013
+ { name: "permission", type: "address" },
36014
+ { name: "nonce", type: "uint256" }
36015
+ ]
36016
+ };
36017
+ function buildRegisterPermissionTypedData(args) {
36018
+ const hasDeadline = args.hasDeadline ?? false;
36019
+ const domain = {
36020
+ name: "SailKernel",
36021
+ version: "1",
36022
+ chainId: args.chainId,
36023
+ verifyingContract: args.kernel
36024
+ };
36025
+ if (hasDeadline) {
36026
+ const deadline = args.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + 300);
36027
+ return {
36028
+ domain,
36029
+ types: REGISTER_PERMISSION_TYPES,
36030
+ primaryType: "RegisterPermission",
36031
+ message: {
36032
+ account: args.account,
36033
+ permission: args.permission,
36034
+ nonce: args.nonce.toString(),
36035
+ deadline: deadline.toString()
36036
+ }
36037
+ };
36038
+ }
36039
+ return {
36040
+ domain,
36041
+ types: REGISTER_PERMISSION_TYPES_NO_DEADLINE,
36042
+ primaryType: "RegisterPermission",
36043
+ message: {
36044
+ account: args.account,
36045
+ permission: args.permission,
36046
+ nonce: args.nonce.toString()
36047
+ }
36048
+ };
36049
+ }
36050
+ var REGISTER_PERMISSIONS_BATCH_TYPES = {
36051
+ RegisterPermissions: [
36052
+ { name: "account", type: "address" },
36053
+ { name: "permissions", type: "address[]" },
36054
+ { name: "nonce", type: "uint256" },
36055
+ { name: "deadline", type: "uint256" }
36056
+ ]
36057
+ };
36058
+ function buildRegisterPermissionsBatchTypedData(args) {
36059
+ const deadline = args.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + 600);
36060
+ return {
36061
+ domain: {
36062
+ name: "SailKernel",
36063
+ version: "1",
36064
+ chainId: args.chainId,
36065
+ verifyingContract: args.kernel
36066
+ },
36067
+ types: REGISTER_PERMISSIONS_BATCH_TYPES,
36068
+ primaryType: "RegisterPermissions",
36069
+ message: {
36070
+ account: args.account,
36071
+ permissions: args.permissions,
36072
+ nonce: args.nonce.toString(),
36073
+ deadline: deadline.toString()
36074
+ }
36075
+ };
36076
+ }
36077
+ var TEMPLATE_EIP712_DOMAIN_ABI = [
36078
+ {
36079
+ type: "function",
36080
+ name: "eip712Domain",
36081
+ stateMutability: "view",
36082
+ inputs: [],
36083
+ outputs: [
36084
+ { name: "fields", type: "bytes1" },
36085
+ { name: "name", type: "string" },
36086
+ { name: "version", type: "string" },
36087
+ { name: "chainId", type: "uint256" },
36088
+ { name: "verifyingContract", type: "address" },
36089
+ { name: "salt", type: "bytes32" },
36090
+ { name: "extensions", type: "uint256[]" }
36091
+ ]
36092
+ }
36093
+ ];
36094
+ var REGISTRATION_EPOCH_ABI = [
36095
+ {
36096
+ type: "function",
36097
+ name: "registrationEpoch",
36098
+ stateMutability: "view",
36099
+ inputs: [
36100
+ { name: "account", type: "address" },
36101
+ { name: "permission", type: "address" }
36102
+ ],
36103
+ outputs: [{ type: "uint256" }]
36104
+ }
36105
+ ];
36106
+ var CONFIGURE_FIELDS_V1 = [
36107
+ { name: "account", type: "address" },
36108
+ { name: "paramsHash", type: "bytes32" },
36109
+ { name: "nonce", type: "uint256" },
36110
+ { name: "deadline", type: "uint256" }
36111
+ ];
36112
+ var CONFIGURE_FIELDS_V2 = [...CONFIGURE_FIELDS_V1, { name: "epoch", type: "uint256" }];
36113
+ async function buildConfigureTypedData(args) {
36114
+ const [, name, version4, chainId] = await args.publicClient.readContract({
36115
+ address: args.template,
36116
+ abi: TEMPLATE_EIP712_DOMAIN_ABI,
36117
+ functionName: "eip712Domain"
36118
+ });
36119
+ if (version4 !== "1" && version4 !== "2") {
36120
+ throw new Error(`Unsupported template EIP-712 domain version "${version4}" for ${args.template}. This SDK signs Configure schema v1 or v2; upgrade the SDK for newer templates.`);
36121
+ }
36122
+ const isV2 = version4 === "2";
36123
+ const message = {
36124
+ account: args.account,
36125
+ paramsHash: keccak256(args.params),
36126
+ nonce: args.nonce.toString(),
36127
+ deadline: args.deadline.toString()
36128
+ };
36129
+ if (isV2) {
36130
+ const epoch = await args.publicClient.readContract({
36131
+ address: args.kernel,
36132
+ abi: REGISTRATION_EPOCH_ABI,
36133
+ functionName: "registrationEpoch",
36134
+ args: [args.account, args.template]
36135
+ });
36136
+ message.epoch = epoch.toString();
36137
+ }
36138
+ return {
36139
+ domain: {
36140
+ name,
36141
+ version: version4,
36142
+ chainId: Number(chainId),
36143
+ verifyingContract: args.template
36144
+ },
36145
+ types: {
36146
+ Configure: isV2 ? CONFIGURE_FIELDS_V2 : CONFIGURE_FIELDS_V1
36147
+ },
36148
+ primaryType: "Configure",
36149
+ message
36150
+ };
36151
+ }
36152
+
35864
36153
  // ../sdk/dist/errors.js
35865
36154
  init_esm2();
35866
36155
  var KERNEL_ERROR_SIGNATURES = [
@@ -35956,163 +36245,25 @@ function extractRevertData(err) {
35956
36245
  let depth = 0;
35957
36246
  while (cursor && typeof cursor === "object" && !seen.has(cursor) && depth < 12) {
35958
36247
  seen.add(cursor);
35959
- depth++;
35960
- const obj = cursor;
35961
- const data = obj["data"];
35962
- if (typeof data === "string" && data.startsWith("0x") && data.length >= 10) {
35963
- return data;
35964
- }
35965
- if (data && typeof data === "object") {
35966
- const inner = data["data"];
35967
- if (typeof inner === "string" && inner.startsWith("0x") && inner.length >= 10) {
35968
- return inner;
35969
- }
35970
- }
35971
- const raw = obj["raw"];
35972
- if (typeof raw === "string" && raw.startsWith("0x") && raw.length >= 10) {
35973
- return raw;
35974
- }
35975
- cursor = obj["cause"];
35976
- }
35977
- return null;
35978
- }
35979
-
35980
- // ../sdk/dist/eip712.js
35981
- init_esm2();
35982
- function sailKernelDomain(args) {
35983
- return {
35984
- name: "SailKernel",
35985
- version: "1",
35986
- chainId: args.chainId,
35987
- verifyingContract: args.kernel
35988
- };
35989
- }
35990
- var DISPATCH_EIP712_FIELDS = {
35991
- selective: [
35992
- { name: "account", type: "address" },
35993
- { name: "permission", type: "address" },
35994
- { name: "target", type: "address" },
35995
- { name: "value", type: "uint256" },
35996
- { name: "dataHash", type: "bytes32" },
35997
- { name: "nonce", type: "uint256" },
35998
- { name: "deadline", type: "uint256" }
35999
- ],
36000
- conjunctive: [
36001
- { name: "account", type: "address" },
36002
- { name: "target", type: "address" },
36003
- { name: "value", type: "uint256" },
36004
- { name: "dataHash", type: "bytes32" },
36005
- { name: "nonce", type: "uint256" },
36006
- { name: "deadline", type: "uint256" }
36007
- ]
36008
- };
36009
- var DEFAULT_DISPATCH_DEADLINE_SECS = 600;
36010
- var MANAGER_NONCES_ABI = [
36011
- {
36012
- type: "function",
36013
- name: "managerNonces",
36014
- stateMutability: "view",
36015
- inputs: [{ name: "account", type: "address" }],
36016
- outputs: [{ type: "uint256" }]
36017
- }
36018
- ];
36019
- async function buildDispatchSignature(params) {
36020
- const { publicClient, kernel, chainId, account: account2, permission, call: call2, manager } = params;
36021
- const caps = await detectKernelCapabilities(publicClient, kernel, {
36022
- chainId
36023
- });
36024
- const nonce = params.nonce ?? await publicClient.readContract({
36025
- address: kernel,
36026
- abi: MANAGER_NONCES_ABI,
36027
- functionName: "managerNonces",
36028
- args: [account2]
36029
- });
36030
- const deadline = params.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + DEFAULT_DISPATCH_DEADLINE_SECS);
36031
- const dataHash = keccak256(call2.data);
36032
- const selective = caps.dispatchModel === "selective";
36033
- const message = selective ? { account: account2, permission, target: call2.target, value: call2.value, dataHash, nonce, deadline } : { account: account2, target: call2.target, value: call2.value, dataHash, nonce, deadline };
36034
- const signature = await manager.signTyped(sailKernelDomain({ chainId, kernel }), {
36035
- primaryType: "Dispatch",
36036
- types: {
36037
- Dispatch: DISPATCH_EIP712_FIELDS[caps.dispatchModel]
36248
+ depth++;
36249
+ const obj = cursor;
36250
+ const data = obj["data"];
36251
+ if (typeof data === "string" && data.startsWith("0x") && data.length >= 10) {
36252
+ return data;
36038
36253
  }
36039
- }, message);
36040
- return { signature, nonce, deadline, dispatchModel: caps.dispatchModel };
36041
- }
36042
- var REGISTER_PERMISSION_TYPES = {
36043
- RegisterPermission: [
36044
- { name: "account", type: "address" },
36045
- { name: "permission", type: "address" },
36046
- { name: "nonce", type: "uint256" },
36047
- { name: "deadline", type: "uint256" }
36048
- ]
36049
- };
36050
- var REGISTER_PERMISSION_TYPES_NO_DEADLINE = {
36051
- RegisterPermission: [
36052
- { name: "account", type: "address" },
36053
- { name: "permission", type: "address" },
36054
- { name: "nonce", type: "uint256" }
36055
- ]
36056
- };
36057
- function buildRegisterPermissionTypedData(args) {
36058
- const hasDeadline = args.hasDeadline ?? false;
36059
- const domain = {
36060
- name: "SailKernel",
36061
- version: "1",
36062
- chainId: args.chainId,
36063
- verifyingContract: args.kernel
36064
- };
36065
- if (hasDeadline) {
36066
- const deadline = args.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + 300);
36067
- return {
36068
- domain,
36069
- types: REGISTER_PERMISSION_TYPES,
36070
- primaryType: "RegisterPermission",
36071
- message: {
36072
- account: args.account,
36073
- permission: args.permission,
36074
- nonce: args.nonce.toString(),
36075
- deadline: deadline.toString()
36254
+ if (data && typeof data === "object") {
36255
+ const inner = data["data"];
36256
+ if (typeof inner === "string" && inner.startsWith("0x") && inner.length >= 10) {
36257
+ return inner;
36076
36258
  }
36077
- };
36078
- }
36079
- return {
36080
- domain,
36081
- types: REGISTER_PERMISSION_TYPES_NO_DEADLINE,
36082
- primaryType: "RegisterPermission",
36083
- message: {
36084
- account: args.account,
36085
- permission: args.permission,
36086
- nonce: args.nonce.toString()
36087
36259
  }
36088
- };
36089
- }
36090
- var REGISTER_PERMISSIONS_BATCH_TYPES = {
36091
- RegisterPermissions: [
36092
- { name: "account", type: "address" },
36093
- { name: "permissions", type: "address[]" },
36094
- { name: "nonce", type: "uint256" },
36095
- { name: "deadline", type: "uint256" }
36096
- ]
36097
- };
36098
- function buildRegisterPermissionsBatchTypedData(args) {
36099
- const deadline = args.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + 600);
36100
- return {
36101
- domain: {
36102
- name: "SailKernel",
36103
- version: "1",
36104
- chainId: args.chainId,
36105
- verifyingContract: args.kernel
36106
- },
36107
- types: REGISTER_PERMISSIONS_BATCH_TYPES,
36108
- primaryType: "RegisterPermissions",
36109
- message: {
36110
- account: args.account,
36111
- permissions: args.permissions,
36112
- nonce: args.nonce.toString(),
36113
- deadline: deadline.toString()
36260
+ const raw = obj["raw"];
36261
+ if (typeof raw === "string" && raw.startsWith("0x") && raw.length >= 10) {
36262
+ return raw;
36114
36263
  }
36115
- };
36264
+ cursor = obj["cause"];
36265
+ }
36266
+ return null;
36116
36267
  }
36117
36268
 
36118
36269
  // ../sdk/dist/lifi.js
@@ -36181,6 +36332,27 @@ function buildPublicClient(config) {
36181
36332
  function defaultDeadline() {
36182
36333
  return BigInt(Math.floor(Date.now() / 1e3) + 300);
36183
36334
  }
36335
+ var CONFIGURABLE_PERMISSION_ABI = [
36336
+ {
36337
+ type: "function",
36338
+ name: "configNonces",
36339
+ stateMutability: "view",
36340
+ inputs: [{ name: "account", type: "address" }],
36341
+ outputs: [{ type: "uint256" }]
36342
+ },
36343
+ {
36344
+ type: "function",
36345
+ name: "configure",
36346
+ stateMutability: "nonpayable",
36347
+ inputs: [
36348
+ { name: "account", type: "address" },
36349
+ { name: "params", type: "bytes" },
36350
+ { name: "deadline", type: "uint256" },
36351
+ { name: "sig", type: "bytes" }
36352
+ ],
36353
+ outputs: []
36354
+ }
36355
+ ];
36184
36356
  var DEFAULT_DISPATCH_GAS = 2000000n;
36185
36357
  function delay(ms) {
36186
36358
  return new Promise((resolve3) => setTimeout(resolve3, ms));
@@ -36337,8 +36509,47 @@ var MandateNamespace = class extends KernelNamespace {
36337
36509
  value: 0n
36338
36510
  });
36339
36511
  }
36340
- reconfigure(_safe, _template, _params, _signer) {
36341
- return notImplemented();
36512
+ /**
36513
+ * Re-configure the per-account bounds of an already-registered shared template.
36514
+ * The permission signer signs the template's `Configure` EIP-712 struct — built by
36515
+ * `buildConfigureTypedData`, which reads the template's live ERC-5267 domain and emits
36516
+ * the v1 or v2 (epoch-bound) schema to match whatever is deployed — and the attached
36517
+ * wallet submits `configure(account, params, deadline, sig)`.
36518
+ *
36519
+ * The config nonce is read fresh on-chain immediately before signing (the template
36520
+ * increments it only after a successful verify), so a re-config never reuses a stale nonce.
36521
+ */
36522
+ async reconfigure(safe, template, params, signer) {
36523
+ const kernel = this.requireKernel();
36524
+ const wallet = this.requireSigner();
36525
+ const encoded = template.encoder.encode(params);
36526
+ const deadline = defaultDeadline();
36527
+ const nonce = await this.publicClient.readContract({
36528
+ address: template.address,
36529
+ abi: CONFIGURABLE_PERMISSION_ABI,
36530
+ functionName: "configNonces",
36531
+ args: [safe]
36532
+ });
36533
+ const td = await buildConfigureTypedData({
36534
+ publicClient: this.publicClient,
36535
+ kernel,
36536
+ template: template.address,
36537
+ account: safe,
36538
+ params: encoded,
36539
+ nonce,
36540
+ deadline
36541
+ });
36542
+ const sig = await signer.signTyped(td.domain, { primaryType: td.primaryType, types: td.types }, td.message);
36543
+ const txHash = await wallet.writeContract({
36544
+ address: template.address,
36545
+ abi: CONFIGURABLE_PERMISSION_ABI,
36546
+ functionName: "configure",
36547
+ args: [safe, encoded, deadline, sig]
36548
+ });
36549
+ const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });
36550
+ if (receipt.status !== "success") {
36551
+ throw new Error(`configure reverted (tx ${txHash})`);
36552
+ }
36342
36553
  }
36343
36554
  replace(_safe, _oldTemplate, _newTemplate, _params, _signer) {
36344
36555
  return notImplemented();
@@ -36637,14 +36848,67 @@ var StrategyNamespace = class extends KernelNamespace {
36637
36848
  }
36638
36849
  };
36639
36850
  var SessionNamespace = class extends KernelNamespace {
36640
- revoke(_safe, _signer) {
36641
- return notImplemented();
36851
+ /**
36852
+ * Suspend (`revokeSession`) or resume (`activateSession`) the manager's dispatch rights.
36853
+ * Both are permissionSigner-signed over the RevokeSession/ActivateSession EIP-712 struct,
36854
+ * with `nonce` read fresh from `signerNonces[account]` immediately before signing — the
36855
+ * kernel bumps that nonce by a full epoch on revoke (#70), so it must never be cached. The
36856
+ * kernel also rotates the manager/batch nonce epochs, invalidating any pre-signed dispatch.
36857
+ */
36858
+ async revoke(safe, signer) {
36859
+ await this.#submitSessionOp(safe, signer, "RevokeSession", "revokeSession");
36642
36860
  }
36643
- activate(_safe, _signer) {
36644
- return notImplemented();
36861
+ async activate(safe, signer) {
36862
+ await this.#submitSessionOp(safe, signer, "ActivateSession", "activateSession");
36645
36863
  }
36646
- status(_safe) {
36647
- return notImplemented();
36864
+ async #submitSessionOp(safe, signer, primaryType, fn) {
36865
+ const kernel = this.requireKernel();
36866
+ const wallet = this.requireSigner();
36867
+ const deadline = defaultDeadline();
36868
+ const nonce = await this.publicClient.readContract({
36869
+ address: kernel,
36870
+ abi: SailKernelAbi,
36871
+ functionName: "signerNonces",
36872
+ args: [safe]
36873
+ });
36874
+ const sig = await signer.signTyped(sailKernelDomain({ chainId: this.config.chainId, kernel }), {
36875
+ primaryType,
36876
+ types: {
36877
+ [primaryType]: [
36878
+ { name: "account", type: "address" },
36879
+ { name: "nonce", type: "uint256" },
36880
+ { name: "deadline", type: "uint256" }
36881
+ ]
36882
+ }
36883
+ }, { account: safe, nonce, deadline });
36884
+ const txHash = await wallet.writeContract({
36885
+ address: kernel,
36886
+ abi: SailKernelAbi,
36887
+ functionName: fn,
36888
+ args: [safe, deadline, sig]
36889
+ });
36890
+ const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });
36891
+ if (receipt.status !== "success") {
36892
+ throw new Error(`${fn} reverted (tx ${txHash})`);
36893
+ }
36894
+ }
36895
+ async status(safe) {
36896
+ const kernel = this.requireKernel();
36897
+ const cfg = await this.publicClient.readContract({
36898
+ address: kernel,
36899
+ abi: SailKernelAbi,
36900
+ functionName: "configs",
36901
+ args: [safe]
36902
+ });
36903
+ return {
36904
+ safe,
36905
+ active: cfg[4],
36906
+ manager: cfg[1],
36907
+ // Block-level markers require an event scan; expose live active/manager state and
36908
+ // leave the historical timestamps null.
36909
+ activatedAtBlock: null,
36910
+ revokedAtBlock: null
36911
+ };
36648
36912
  }
36649
36913
  };
36650
36914
  var FeesNamespace = class extends KernelNamespace {
@@ -37858,6 +38122,9 @@ var SAIL_INTELLIGENCE_DOCS_URL = "https://api.sail.money/docs";
37858
38122
  // src/commands/account.ts
37859
38123
  init_esm2();
37860
38124
 
38125
+ // src/lib/chain.ts
38126
+ init_esm2();
38127
+
37861
38128
  // ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/op-stack/contracts.js
37862
38129
  var contracts = {
37863
38130
  gasPriceOracle: { address: "0x420000000000000000000000000000000000000F" },
@@ -38129,6 +38396,35 @@ var baseSepoliaPreconf = /* @__PURE__ */ defineChain({
38129
38396
  }
38130
38397
  });
38131
38398
 
38399
+ // ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/bsc.js
38400
+ init_defineChain();
38401
+ var bsc = /* @__PURE__ */ defineChain({
38402
+ id: 56,
38403
+ name: "BNB Smart Chain",
38404
+ blockTime: 750,
38405
+ nativeCurrency: {
38406
+ decimals: 18,
38407
+ name: "BNB",
38408
+ symbol: "BNB"
38409
+ },
38410
+ rpcUrls: {
38411
+ default: { http: ["https://56.rpc.thirdweb.com"] }
38412
+ },
38413
+ blockExplorers: {
38414
+ default: {
38415
+ name: "BscScan",
38416
+ url: "https://bscscan.com",
38417
+ apiUrl: "https://api.bscscan.com/api"
38418
+ }
38419
+ },
38420
+ contracts: {
38421
+ multicall3: {
38422
+ address: "0xca11bde05977b3631167028862be2a173976ca11",
38423
+ blockCreated: 15921452
38424
+ }
38425
+ }
38426
+ });
38427
+
38132
38428
  // ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/mainnet.js
38133
38429
  init_defineChain();
38134
38430
  var mainnet = /* @__PURE__ */ defineChain({
@@ -38160,6 +38456,56 @@ var mainnet = /* @__PURE__ */ defineChain({
38160
38456
  }
38161
38457
  });
38162
38458
 
38459
+ // ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/optimism.js
38460
+ init_defineChain();
38461
+ var sourceId3 = 1;
38462
+ var optimism = /* @__PURE__ */ defineChain({
38463
+ ...chainConfig,
38464
+ id: 10,
38465
+ name: "OP Mainnet",
38466
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
38467
+ rpcUrls: {
38468
+ default: {
38469
+ http: ["https://mainnet.optimism.io"]
38470
+ }
38471
+ },
38472
+ blockExplorers: {
38473
+ default: {
38474
+ name: "Optimism Explorer",
38475
+ url: "https://optimistic.etherscan.io",
38476
+ apiUrl: "https://api-optimistic.etherscan.io/api"
38477
+ }
38478
+ },
38479
+ contracts: {
38480
+ ...chainConfig.contracts,
38481
+ disputeGameFactory: {
38482
+ [sourceId3]: {
38483
+ address: "0xe5965Ab5962eDc7477C8520243A95517CD252fA9"
38484
+ }
38485
+ },
38486
+ l2OutputOracle: {
38487
+ [sourceId3]: {
38488
+ address: "0xdfe97868233d1aa22e815a266982f2cf17685a27"
38489
+ }
38490
+ },
38491
+ multicall3: {
38492
+ address: "0xca11bde05977b3631167028862be2a173976ca11",
38493
+ blockCreated: 4286263
38494
+ },
38495
+ portal: {
38496
+ [sourceId3]: {
38497
+ address: "0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"
38498
+ }
38499
+ },
38500
+ l1StandardBridge: {
38501
+ [sourceId3]: {
38502
+ address: "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1"
38503
+ }
38504
+ }
38505
+ },
38506
+ sourceId: sourceId3
38507
+ });
38508
+
38163
38509
  // ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/sepolia.js
38164
38510
  init_defineChain();
38165
38511
  var sepolia = /* @__PURE__ */ defineChain({
@@ -38193,7 +38539,7 @@ var sepolia = /* @__PURE__ */ defineChain({
38193
38539
 
38194
38540
  // ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/unichain.js
38195
38541
  init_defineChain();
38196
- var sourceId3 = 1;
38542
+ var sourceId4 = 1;
38197
38543
  var unichain = /* @__PURE__ */ defineChain({
38198
38544
  ...chainConfig,
38199
38545
  id: 130,
@@ -38219,22 +38565,77 @@ var unichain = /* @__PURE__ */ defineChain({
38219
38565
  blockCreated: 0
38220
38566
  },
38221
38567
  disputeGameFactory: {
38222
- [sourceId3]: {
38568
+ [sourceId4]: {
38223
38569
  address: "0x2F12d621a16e2d3285929C9996f478508951dFe4"
38224
38570
  }
38225
38571
  },
38226
38572
  portal: {
38227
- [sourceId3]: {
38573
+ [sourceId4]: {
38228
38574
  address: "0x0bd48f6B86a26D3a217d0Fa6FfE2B491B956A7a2"
38229
38575
  }
38230
38576
  },
38231
38577
  l1StandardBridge: {
38232
- [sourceId3]: {
38578
+ [sourceId4]: {
38233
38579
  address: "0x81014F44b0a345033bB2b3B21C7a1A308B35fEeA"
38234
38580
  }
38235
38581
  }
38236
38582
  },
38237
- sourceId: sourceId3
38583
+ sourceId: sourceId4
38584
+ });
38585
+
38586
+ // ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/worldchain.js
38587
+ init_defineChain();
38588
+ var sourceId5 = 1;
38589
+ var worldchain = /* @__PURE__ */ defineChain({
38590
+ ...chainConfig,
38591
+ id: 480,
38592
+ name: "World Chain",
38593
+ network: "worldchain",
38594
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
38595
+ rpcUrls: {
38596
+ default: { http: ["https://worldchain-mainnet.g.alchemy.com/public"] }
38597
+ },
38598
+ blockExplorers: {
38599
+ default: {
38600
+ name: "Worldscan",
38601
+ url: "https://worldscan.org",
38602
+ apiUrl: "https://api.worldscan.org/api"
38603
+ },
38604
+ blockscout: {
38605
+ name: "Blockscout",
38606
+ url: "https://worldchain-mainnet.explorer.alchemy.com",
38607
+ apiUrl: "https://worldchain-mainnet.explorer.alchemy.com/api"
38608
+ }
38609
+ },
38610
+ contracts: {
38611
+ ...chainConfig.contracts,
38612
+ multicall3: {
38613
+ address: "0xca11bde05977b3631167028862be2a173976ca11",
38614
+ blockCreated: 0
38615
+ },
38616
+ disputeGameFactory: {
38617
+ [sourceId5]: {
38618
+ address: "0x069c4c579671f8c120b1327a73217D01Ea2EC5ea"
38619
+ }
38620
+ },
38621
+ l2OutputOracle: {
38622
+ [sourceId5]: {
38623
+ address: "0x19A6d1E9034596196295CF148509796978343c5D"
38624
+ }
38625
+ },
38626
+ portal: {
38627
+ [sourceId5]: {
38628
+ address: "0xd5ec14a83B7d95BE1E2Ac12523e2dEE12Cbeea6C"
38629
+ }
38630
+ },
38631
+ l1StandardBridge: {
38632
+ [sourceId5]: {
38633
+ address: "0x470458C91978D2d929704489Ad730DC3E3001113"
38634
+ }
38635
+ }
38636
+ },
38637
+ testnet: false,
38638
+ sourceId: sourceId5
38238
38639
  });
38239
38640
 
38240
38641
  // src/lib/io.ts
@@ -38397,11 +38798,28 @@ async function promptHidden(question) {
38397
38798
  }
38398
38799
 
38399
38800
  // src/lib/chain.ts
38801
+ var hyperevm = defineChain({
38802
+ id: 999,
38803
+ name: "HyperEVM",
38804
+ nativeCurrency: { name: "HYPE", symbol: "HYPE", decimals: 18 },
38805
+ rpcUrls: { default: { http: ["https://rpc.hyperliquid.xyz/evm"] } }
38806
+ });
38807
+ var megaeth = defineChain({
38808
+ id: 4326,
38809
+ name: "MegaETH",
38810
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
38811
+ rpcUrls: { default: { http: ["https://carrot.megaeth.com/rpc"] } }
38812
+ });
38400
38813
  var CHAINS = {
38401
38814
  1: mainnet,
38402
38815
  8453: base,
38403
38816
  42161: arbitrum,
38817
+ 10: optimism,
38404
38818
  130: unichain,
38819
+ 56: bsc,
38820
+ 480: worldchain,
38821
+ 999: hyperevm,
38822
+ 4326: megaeth,
38405
38823
  84532: baseSepolia,
38406
38824
  11155111: sepolia
38407
38825
  };
@@ -38409,7 +38827,7 @@ function getChainById(chainId) {
38409
38827
  const chain2 = CHAINS[chainId];
38410
38828
  if (!chain2) {
38411
38829
  throw new Error(
38412
- `Unsupported chainId: ${chainId}. Supported: 1 (Ethereum), 8453 (Base), 42161 (Arbitrum), 130 (Unichain), 84532 (Base Sepolia), 11155111 (Eth Sepolia)`
38830
+ `Unsupported chainId: ${chainId}. Supported: 1 (Ethereum), 8453 (Base), 42161 (Arbitrum), 10 (Optimism), 130 (Unichain), 56 (BSC), 480 (World Chain), 999 (HyperEVM), 4326 (MegaETH), 84532 (Base Sepolia), 11155111 (Eth Sepolia)`
38413
38831
  );
38414
38832
  }
38415
38833
  return chain2;
@@ -39300,7 +39718,7 @@ async function createSigningChannel(projectRoot = process.cwd()) {
39300
39718
  }
39301
39719
 
39302
39720
  // src/commands/account.ts
39303
- var SAIL_MAINNET_CHAINS = [1, 8453, 42161, 130];
39721
+ var SAIL_MAINNET_CHAINS = [1, 8453, 42161, 10, 130, 56, 480, 999, 4326];
39304
39722
  async function fetchProxyCreationCode(preferredChainId) {
39305
39723
  const rpcUrl = getRpcUrl(preferredChainId) ?? void 0;
39306
39724
  const publicClient = createPublicClient({
@@ -40357,7 +40775,7 @@ async function doctor(options = {}) {
40357
40775
  console.log(`Account: ${safe}`);
40358
40776
  if (stored?.saltNonce != null) {
40359
40777
  const saltNonce = BigInt(stored.saltNonce);
40360
- const MAINNET_CHAINS = [1, 8453, 42161, 130];
40778
+ const MAINNET_CHAINS = [1, 8453, 42161, 10, 130, 56, 480, 999, 4326];
40361
40779
  try {
40362
40780
  const proxyCreationCode = await pc.readContract({
40363
40781
  address: SAFE_V141.proxyFactory,
@@ -44519,7 +44937,7 @@ async function scan(options) {
44519
44937
  args: [address]
44520
44938
  })
44521
44939
  ]);
44522
- const [permissionSigner, manager, , sessionActive] = config;
44940
+ const [permissionSigner, manager, , , sessionActive] = config;
44523
44941
  smas.push({ address, registered: true, manager, permissionSigner, sessionActive, mandates });
44524
44942
  } catch (err) {
44525
44943
  smas.push({