@dev.sail.money/sailor 0.0.2-12

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 (319) hide show
  1. package/AGENTS.md +111 -0
  2. package/LICENSE +21 -0
  3. package/README.md +337 -0
  4. package/docs/PERMISSION_MODEL.md +93 -0
  5. package/examples/permissions/BoundedBet_Limitless_Base.sol +96 -0
  6. package/examples/permissions/BoundedBorrow_AaveV3_Arbitrum.sol +94 -0
  7. package/examples/permissions/BoundedPerp_GMXv2_Arbitrum.sol +143 -0
  8. package/examples/permissions/BoundedSwap_UniswapV3_Base.sol +113 -0
  9. package/examples/permissions/BoundedSwap_UniswapV4_Unichain.sol +144 -0
  10. package/examples/permissions/BoundedTransfer_ERC20_Ethereum.sol +73 -0
  11. package/examples/permissions/README.md +52 -0
  12. package/examples/permissions/foundry.toml +10 -0
  13. package/examples/permissions/interfaces/IPermission.sol +18 -0
  14. package/package.json +39 -0
  15. package/packages/cli/README.md +34 -0
  16. package/packages/cli/dist/index.cjs +42801 -0
  17. package/packages/cli/dist/server.cjs +51201 -0
  18. package/packages/sdk/README.md +65 -0
  19. package/packages/sdk/dist/abis/MandateFactory.d.ts +140 -0
  20. package/packages/sdk/dist/abis/MandateFactory.d.ts.map +1 -0
  21. package/packages/sdk/dist/abis/MandateFactory.js +93 -0
  22. package/packages/sdk/dist/abis/MandateFactory.js.map +1 -0
  23. package/packages/sdk/dist/abis/SailGovernance.d.ts +57 -0
  24. package/packages/sdk/dist/abis/SailGovernance.d.ts.map +1 -0
  25. package/packages/sdk/dist/abis/SailGovernance.js +52 -0
  26. package/packages/sdk/dist/abis/SailGovernance.js.map +1 -0
  27. package/packages/sdk/dist/abis/SailKernel.d.ts +466 -0
  28. package/packages/sdk/dist/abis/SailKernel.d.ts.map +1 -0
  29. package/packages/sdk/dist/abis/SailKernel.js +311 -0
  30. package/packages/sdk/dist/abis/SailKernel.js.map +1 -0
  31. package/packages/sdk/dist/abis/index.d.ts +4 -0
  32. package/packages/sdk/dist/abis/index.d.ts.map +1 -0
  33. package/packages/sdk/dist/abis/index.js +7 -0
  34. package/packages/sdk/dist/abis/index.js.map +1 -0
  35. package/packages/sdk/dist/capabilities.d.ts +77 -0
  36. package/packages/sdk/dist/capabilities.d.ts.map +1 -0
  37. package/packages/sdk/dist/capabilities.js +158 -0
  38. package/packages/sdk/dist/capabilities.js.map +1 -0
  39. package/packages/sdk/dist/client.d.ts +37 -0
  40. package/packages/sdk/dist/client.d.ts.map +1 -0
  41. package/packages/sdk/dist/client.js +646 -0
  42. package/packages/sdk/dist/client.js.map +1 -0
  43. package/packages/sdk/dist/deployments.d.ts +82 -0
  44. package/packages/sdk/dist/deployments.d.ts.map +1 -0
  45. package/packages/sdk/dist/deployments.js +197 -0
  46. package/packages/sdk/dist/deployments.js.map +1 -0
  47. package/packages/sdk/dist/discovery.d.ts +10 -0
  48. package/packages/sdk/dist/discovery.d.ts.map +1 -0
  49. package/packages/sdk/dist/discovery.js +41 -0
  50. package/packages/sdk/dist/discovery.js.map +1 -0
  51. package/packages/sdk/dist/eip712.d.ts +257 -0
  52. package/packages/sdk/dist/eip712.d.ts.map +1 -0
  53. package/packages/sdk/dist/eip712.js +255 -0
  54. package/packages/sdk/dist/eip712.js.map +1 -0
  55. package/packages/sdk/dist/errors.d.ts +47 -0
  56. package/packages/sdk/dist/errors.d.ts.map +1 -0
  57. package/packages/sdk/dist/errors.js +168 -0
  58. package/packages/sdk/dist/errors.js.map +1 -0
  59. package/packages/sdk/dist/fees.d.ts +16 -0
  60. package/packages/sdk/dist/fees.d.ts.map +1 -0
  61. package/packages/sdk/dist/fees.js +51 -0
  62. package/packages/sdk/dist/fees.js.map +1 -0
  63. package/packages/sdk/dist/index.d.ts +23 -0
  64. package/packages/sdk/dist/index.d.ts.map +1 -0
  65. package/packages/sdk/dist/index.js +16 -0
  66. package/packages/sdk/dist/index.js.map +1 -0
  67. package/packages/sdk/dist/intelligence.d.ts +923 -0
  68. package/packages/sdk/dist/intelligence.d.ts.map +1 -0
  69. package/packages/sdk/dist/intelligence.js +357 -0
  70. package/packages/sdk/dist/intelligence.js.map +1 -0
  71. package/packages/sdk/dist/keyring.d.ts +60 -0
  72. package/packages/sdk/dist/keyring.d.ts.map +1 -0
  73. package/packages/sdk/dist/keyring.js +159 -0
  74. package/packages/sdk/dist/keyring.js.map +1 -0
  75. package/packages/sdk/dist/lifi.d.ts +83 -0
  76. package/packages/sdk/dist/lifi.d.ts.map +1 -0
  77. package/packages/sdk/dist/lifi.js +69 -0
  78. package/packages/sdk/dist/lifi.js.map +1 -0
  79. package/packages/sdk/dist/safe.d.ts +158 -0
  80. package/packages/sdk/dist/safe.d.ts.map +1 -0
  81. package/packages/sdk/dist/safe.js +163 -0
  82. package/packages/sdk/dist/safe.js.map +1 -0
  83. package/packages/sdk/dist/signing.d.ts +106 -0
  84. package/packages/sdk/dist/signing.d.ts.map +1 -0
  85. package/packages/sdk/dist/signing.js +2 -0
  86. package/packages/sdk/dist/signing.js.map +1 -0
  87. package/packages/sdk/dist/templates/ammLiquidity.d.ts +16 -0
  88. package/packages/sdk/dist/templates/ammLiquidity.d.ts.map +1 -0
  89. package/packages/sdk/dist/templates/ammLiquidity.js +60 -0
  90. package/packages/sdk/dist/templates/ammLiquidity.js.map +1 -0
  91. package/packages/sdk/dist/templates/approveAndCallBatch.d.ts +14 -0
  92. package/packages/sdk/dist/templates/approveAndCallBatch.d.ts.map +1 -0
  93. package/packages/sdk/dist/templates/approveAndCallBatch.js +53 -0
  94. package/packages/sdk/dist/templates/approveAndCallBatch.js.map +1 -0
  95. package/packages/sdk/dist/templates/boundedBorrow.d.ts +16 -0
  96. package/packages/sdk/dist/templates/boundedBorrow.d.ts.map +1 -0
  97. package/packages/sdk/dist/templates/boundedBorrow.js +56 -0
  98. package/packages/sdk/dist/templates/boundedBorrow.js.map +1 -0
  99. package/packages/sdk/dist/templates/boundedSwap.d.ts +16 -0
  100. package/packages/sdk/dist/templates/boundedSwap.d.ts.map +1 -0
  101. package/packages/sdk/dist/templates/boundedSwap.js +56 -0
  102. package/packages/sdk/dist/templates/boundedSwap.js.map +1 -0
  103. package/packages/sdk/dist/templates/defiBundle.d.ts +14 -0
  104. package/packages/sdk/dist/templates/defiBundle.d.ts.map +1 -0
  105. package/packages/sdk/dist/templates/defiBundle.js +52 -0
  106. package/packages/sdk/dist/templates/defiBundle.js.map +1 -0
  107. package/packages/sdk/dist/templates/index.d.ts +15 -0
  108. package/packages/sdk/dist/templates/index.d.ts.map +1 -0
  109. package/packages/sdk/dist/templates/index.js +8 -0
  110. package/packages/sdk/dist/templates/index.js.map +1 -0
  111. package/packages/sdk/dist/templates/pendle.d.ts +14 -0
  112. package/packages/sdk/dist/templates/pendle.d.ts.map +1 -0
  113. package/packages/sdk/dist/templates/pendle.js +52 -0
  114. package/packages/sdk/dist/templates/pendle.js.map +1 -0
  115. package/packages/sdk/dist/templates/transferTarget.d.ts +10 -0
  116. package/packages/sdk/dist/templates/transferTarget.d.ts.map +1 -0
  117. package/packages/sdk/dist/templates/transferTarget.js +42 -0
  118. package/packages/sdk/dist/templates/transferTarget.js.map +1 -0
  119. package/packages/sdk/dist/types.d.ts +382 -0
  120. package/packages/sdk/dist/types.d.ts.map +1 -0
  121. package/packages/sdk/dist/types.js +2 -0
  122. package/packages/sdk/dist/types.js.map +1 -0
  123. package/packages/sdk/package.json +52 -0
  124. package/packages/ui/dist/assets/Arc-VDBY7LNS-BChRXCXW.js +1 -0
  125. package/packages/ui/dist/assets/Brave-BRAKJXDS-mq-Xo37j.js +1 -0
  126. package/packages/ui/dist/assets/Browser-76IHF3Y2-BMhRaC5Z.js +1 -0
  127. package/packages/ui/dist/assets/Chrome-65Q5P54Y-DR9MQEVr.js +1 -0
  128. package/packages/ui/dist/assets/Edge-XSPUTORV-DEoZslQE.js +1 -0
  129. package/packages/ui/dist/assets/Firefox-AAHGJQIP-Bp_Hm04m.js +1 -0
  130. package/packages/ui/dist/assets/Linux-OO4TNCLJ-B0aw93n9.js +1 -0
  131. package/packages/ui/dist/assets/Macos-MW4AE7LN-Vvm8Drw3.js +1 -0
  132. package/packages/ui/dist/assets/Opera-KQZLSACL-Cwv5MDFy.js +1 -0
  133. package/packages/ui/dist/assets/Safari-ZPL37GXR-C4Ggg6rz.js +1 -0
  134. package/packages/ui/dist/assets/Windows-PPTHQER6-BlyV2p7Y.js +1 -0
  135. package/packages/ui/dist/assets/add-DaJhwIBV.js +15 -0
  136. package/packages/ui/dist/assets/all-wallets-BUxsqWXi.js +6 -0
  137. package/packages/ui/dist/assets/apechain-SX5YFU6N-q5qBv-mp.js +1 -0
  138. package/packages/ui/dist/assets/app-store-DkltwTqE.js +17 -0
  139. package/packages/ui/dist/assets/apple-owVOeaIT.js +18 -0
  140. package/packages/ui/dist/assets/ar_AR-LIPSOZP5-BQrIDibT.js +1519 -0
  141. package/packages/ui/dist/assets/arbitrum-WURIBY6W-CqVkHBr5.js +1 -0
  142. package/packages/ui/dist/assets/arrow-bottom-D2mmNJve.js +8 -0
  143. package/packages/ui/dist/assets/arrow-bottom-circle-CbNYijx-.js +11 -0
  144. package/packages/ui/dist/assets/arrow-left-DJB61s4C.js +8 -0
  145. package/packages/ui/dist/assets/arrow-right-BBrsQ9R4.js +8 -0
  146. package/packages/ui/dist/assets/arrow-top-Cil6bOc8.js +8 -0
  147. package/packages/ui/dist/assets/assets-Q6ZU7ZJ5-P8HioiAD.js +1 -0
  148. package/packages/ui/dist/assets/avalanche-KOMJD3XY-Dsn_JPR4.js +1 -0
  149. package/packages/ui/dist/assets/bank-CbwEmRo3.js +14 -0
  150. package/packages/ui/dist/assets/base-OAXLRA4F-CoYTVIiL.js +1 -0
  151. package/packages/ui/dist/assets/base-QS6CYWIN-CsjdbWCf.js +1 -0
  152. package/packages/ui/dist/assets/basic-CLNfjw3m.js +2128 -0
  153. package/packages/ui/dist/assets/berachain-NJECWIVC-DumxnFvf.js +1 -0
  154. package/packages/ui/dist/assets/blast-V555OVXZ-BbhJh1tj.js +1 -0
  155. package/packages/ui/dist/assets/browser-B5TtF4Pb.js +14 -0
  156. package/packages/ui/dist/assets/bsc-N647EYR2-B2nLKXWV.js +1 -0
  157. package/packages/ui/dist/assets/card-CO7BVB-C.js +14 -0
  158. package/packages/ui/dist/assets/ccip-2W7K3_J3.js +1 -0
  159. package/packages/ui/dist/assets/celo-GEP4TUHG-CenIBYLU.js +1 -0
  160. package/packages/ui/dist/assets/checkmark-BEtSHq9m.js +11 -0
  161. package/packages/ui/dist/assets/checkmark-bold-D9xGHzPE.js +8 -0
  162. package/packages/ui/dist/assets/chevron-bottom-BDztht6i.js +8 -0
  163. package/packages/ui/dist/assets/chevron-left-EV4GFNbc.js +8 -0
  164. package/packages/ui/dist/assets/chevron-right-B4_bB9oR.js +8 -0
  165. package/packages/ui/dist/assets/chevron-top-D54xPNzF.js +8 -0
  166. package/packages/ui/dist/assets/chrome-store-DYUpAJJq.js +61 -0
  167. package/packages/ui/dist/assets/clock-Ca1T1Soz.js +8 -0
  168. package/packages/ui/dist/assets/close-BZqWjurK.js +8 -0
  169. package/packages/ui/dist/assets/coinPlaceholder-e6fl2XDo.js +8 -0
  170. package/packages/ui/dist/assets/compass-DCLC7zIh.js +8 -0
  171. package/packages/ui/dist/assets/connect-UA7M4XW6-IY3X6Bmr.js +1 -0
  172. package/packages/ui/dist/assets/copy-Th2AaD-O.js +15 -0
  173. package/packages/ui/dist/assets/core-Ckx_cyuH.js +907 -0
  174. package/packages/ui/dist/assets/create-FASO7PVG-D_rvSpre.js +1 -0
  175. package/packages/ui/dist/assets/cronos-HJPAQTAE-BEOvlOC4.js +1 -0
  176. package/packages/ui/dist/assets/cursor-DV7rOqbJ.js +3 -0
  177. package/packages/ui/dist/assets/cursor-transparent-BKHeABKB.js +12 -0
  178. package/packages/ui/dist/assets/de_DE-YE3KOFHU-BRt5ztUe.js +1519 -0
  179. package/packages/ui/dist/assets/degen-FQQ4XGHB-CeHTs88l.js +1 -0
  180. package/packages/ui/dist/assets/desktop-CBjY8t6F.js +9 -0
  181. package/packages/ui/dist/assets/disconnect-DbSs2cli.js +8 -0
  182. package/packages/ui/dist/assets/discord-ZlLOAUkM.js +17 -0
  183. package/packages/ui/dist/assets/es_419-7LMPU7G4-DH7rM0yQ.js +1519 -0
  184. package/packages/ui/dist/assets/ethereum-RGGVA4PY-SWGOlkuk.js +1 -0
  185. package/packages/ui/dist/assets/etherscan-CKUrqWYN.js +6 -0
  186. package/packages/ui/dist/assets/events-CiKP71cK.js +1 -0
  187. package/packages/ui/dist/assets/exclamation-triangle-DA1QzFiO.js +4 -0
  188. package/packages/ui/dist/assets/extension-BVJkmvpJ.js +8 -0
  189. package/packages/ui/dist/assets/external-link-D_bsR7B2.js +8 -0
  190. package/packages/ui/dist/assets/facebook-CmFmhojx.js +26 -0
  191. package/packages/ui/dist/assets/fallback-Ofl6uSnB.js +1 -0
  192. package/packages/ui/dist/assets/farcaster-Co-M3Ss8.js +12 -0
  193. package/packages/ui/dist/assets/filters-B1WwNaFU.js +8 -0
  194. package/packages/ui/dist/assets/flow-5FQJFCTK-CUie2reO.js +1 -0
  195. package/packages/ui/dist/assets/fr_FR-VBJP3ZLL-B-_ocunw.js +1519 -0
  196. package/packages/ui/dist/assets/github-CP4fP6gn.js +18 -0
  197. package/packages/ui/dist/assets/gnosis-37ZC4RBL-B137OtHZ.js +1 -0
  198. package/packages/ui/dist/assets/google-CsOIXJ6V.js +18 -0
  199. package/packages/ui/dist/assets/gravity-J5YQHTYH-Bj6B0uod.js +1 -0
  200. package/packages/ui/dist/assets/hardhat-TX56IT5N-CV1FY-wE.js +1 -0
  201. package/packages/ui/dist/assets/help-circle-DiMkomdF.js +12 -0
  202. package/packages/ui/dist/assets/hi_IN-WBVD5XYI-D73g2UFs.js +1519 -0
  203. package/packages/ui/dist/assets/hyperevm-VKPAA4SA-CHwraEsx.js +1 -0
  204. package/packages/ui/dist/assets/id-lmscL5LX.js +12 -0
  205. package/packages/ui/dist/assets/id_ID-SBYANJ7G-Cjpa4ay6.js +1519 -0
  206. package/packages/ui/dist/assets/image-B-ubJrY5.js +4 -0
  207. package/packages/ui/dist/assets/index-BaukYv-x.js +16 -0
  208. package/packages/ui/dist/assets/index-CF0KMmke.js +395 -0
  209. package/packages/ui/dist/assets/index-CKxgNxS9.css +1 -0
  210. package/packages/ui/dist/assets/index-CZR1Qjhs.js +1 -0
  211. package/packages/ui/dist/assets/index-DVgfCzCo.js +1 -0
  212. package/packages/ui/dist/assets/index-Dbh5V1Z0.js +1 -0
  213. package/packages/ui/dist/assets/index-Q2Yai4Fe.js +2103 -0
  214. package/packages/ui/dist/assets/index.es-C78cE5SI.js +26 -0
  215. package/packages/ui/dist/assets/info-Cqg57EVo.js +3 -0
  216. package/packages/ui/dist/assets/info-circle-DkeSWNKV.js +12 -0
  217. package/packages/ui/dist/assets/ink-FZMYZWHG-62p-5IK5.js +1 -0
  218. package/packages/ui/dist/assets/ja_JP-ZRMWJV3I-DXbifiMm.js +1519 -0
  219. package/packages/ui/dist/assets/kaia-65D2U3PU-JmuLQ4gC.js +1 -0
  220. package/packages/ui/dist/assets/ko_KR-FR54RFUG-upinSHjQ.js +1519 -0
  221. package/packages/ui/dist/assets/lightbulb-DNlO4qKh.js +3 -0
  222. package/packages/ui/dist/assets/linea-QRMVQ5DY-DuI3vv0d.js +1 -0
  223. package/packages/ui/dist/assets/login-UP3DZBGS-Db_wM5oQ.js +1 -0
  224. package/packages/ui/dist/assets/mail-kVQ8Jb9Y.js +8 -0
  225. package/packages/ui/dist/assets/manta-SI27YFEJ-CpVOKa06.js +1 -0
  226. package/packages/ui/dist/assets/mantle-CKIUT334-DR2WgqzU.js +1 -0
  227. package/packages/ui/dist/assets/metaMaskWallet-EI6MED72-D5HFOsnz.js +1 -0
  228. package/packages/ui/dist/assets/metamask-sdk-CBalSvz7.js +542 -0
  229. package/packages/ui/dist/assets/mobile-BEteuhF7.js +9 -0
  230. package/packages/ui/dist/assets/monad-4KWC6TSS-DVXSkpiz.js +1 -0
  231. package/packages/ui/dist/assets/more-DBWmXQli.js +11 -0
  232. package/packages/ui/dist/assets/ms_MY-EZSGYYYQ-4cPLK-3L.js +1519 -0
  233. package/packages/ui/dist/assets/native-CJ5et6AR.js +1 -0
  234. package/packages/ui/dist/assets/network-placeholder-Dg1uUHiL.js +14 -0
  235. package/packages/ui/dist/assets/nftPlaceholder-i3AHSiD9.js +8 -0
  236. package/packages/ui/dist/assets/off-BtMm0fi2.js +8 -0
  237. package/packages/ui/dist/assets/optimism-HAF2GUT7-ec6Nqxs9.js +1 -0
  238. package/packages/ui/dist/assets/parseSignature-Cb5FlWWg.js +1 -0
  239. package/packages/ui/dist/assets/play-store-iKKkXa6a.js +32 -0
  240. package/packages/ui/dist/assets/plus-CA5NaRtb.js +13 -0
  241. package/packages/ui/dist/assets/polygon-WW6ZI7PM-DXlmm4L1.js +1 -0
  242. package/packages/ui/dist/assets/pt_BR-JQFQ3P4L-DOHfdcA2.js +1519 -0
  243. package/packages/ui/dist/assets/qr-code-D2kiqR7h.js +6 -0
  244. package/packages/ui/dist/assets/rainbowWallet-O26YNBMX-DUhYus-9.js +1 -0
  245. package/packages/ui/dist/assets/recycle-horizontal-Dcme7R03.js +9 -0
  246. package/packages/ui/dist/assets/refresh-Dega3sDp.js +8 -0
  247. package/packages/ui/dist/assets/refresh-S4T5V5GX-CwqIaaxK.js +1 -0
  248. package/packages/ui/dist/assets/reown-logo-xNkksyWJ.js +12 -0
  249. package/packages/ui/dist/assets/ronin-EMCPYXZT-N-QBHZdV.js +1 -0
  250. package/packages/ui/dist/assets/ru_RU-Z42UEJBP-Cvb2oWxQ.js +1519 -0
  251. package/packages/ui/dist/assets/safeWallet-5MNKTR5Z-D-5imDLD.js +1 -0
  252. package/packages/ui/dist/assets/sanko-RHQYXGM5-OX010CbN.js +1 -0
  253. package/packages/ui/dist/assets/scan-4UYSQ56Q-CjMz6-XC.js +1 -0
  254. package/packages/ui/dist/assets/scroll-5OBGQVOV-DJFECiai.js +1 -0
  255. package/packages/ui/dist/assets/search-HYl7NO8x.js +8 -0
  256. package/packages/ui/dist/assets/secp256k1-Cxd6_SiH.js +1 -0
  257. package/packages/ui/dist/assets/send-CJU8CUAo.js +15 -0
  258. package/packages/ui/dist/assets/sign-A7IJEUT5-CGsRnPrd.js +1 -0
  259. package/packages/ui/dist/assets/superposition-HG6MMR2Y-bRkgatRO.js +1 -0
  260. package/packages/ui/dist/assets/swapHorizontal-IMUKiUre.js +8 -0
  261. package/packages/ui/dist/assets/swapHorizontalBold-CNYnNJ9-.js +8 -0
  262. package/packages/ui/dist/assets/swapHorizontalMedium-B9VxEYsT.js +16 -0
  263. package/packages/ui/dist/assets/swapHorizontalRoundedBold-Dz33l_Jh.js +8 -0
  264. package/packages/ui/dist/assets/swapVertical-CHUmjVJ0.js +8 -0
  265. package/packages/ui/dist/assets/telegram-kl9S2mbU.js +16 -0
  266. package/packages/ui/dist/assets/th_TH-4YB4VSB2-BUipNP-V.js +1519 -0
  267. package/packages/ui/dist/assets/three-dots-U5lhA1Am.js +5 -0
  268. package/packages/ui/dist/assets/tr_TR-5FKHPPIO-D5jTpIm9.js +1519 -0
  269. package/packages/ui/dist/assets/twitch-KTEUWXEp.js +18 -0
  270. package/packages/ui/dist/assets/twitterIcon-BHiq8mRg.js +6 -0
  271. package/packages/ui/dist/assets/uk_UA-ZD4IBC52-DgnQrpzl.js +1519 -0
  272. package/packages/ui/dist/assets/unichain-C5BWO2ZY-BfguYsnu.js +1 -0
  273. package/packages/ui/dist/assets/verify-CfN-BXNd.js +8 -0
  274. package/packages/ui/dist/assets/verify-filled-DwZccetj.js +8 -0
  275. package/packages/ui/dist/assets/vi_VN-5EVRZKLY-x078672g.js +1519 -0
  276. package/packages/ui/dist/assets/w3m-modal-CS-PFqPE.js +642 -0
  277. package/packages/ui/dist/assets/wallet-DVlGkhOY.js +8 -0
  278. package/packages/ui/dist/assets/wallet-placeholder-CvR_iEWX.js +14 -0
  279. package/packages/ui/dist/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js +1 -0
  280. package/packages/ui/dist/assets/walletconnect-8pZBDvVI.js +30 -0
  281. package/packages/ui/dist/assets/warning-circle-ylLEE0Yp.js +12 -0
  282. package/packages/ui/dist/assets/x-C_TBsTMj.js +12 -0
  283. package/packages/ui/dist/assets/xdc-KJ3TDBYO-DNV6zchh.js +1 -0
  284. package/packages/ui/dist/assets/zetachain-TLDS5IPW-Udhyw16T.js +1 -0
  285. package/packages/ui/dist/assets/zh_CN-4XK5YJPR-Bt6Yz5Ek.js +1519 -0
  286. package/packages/ui/dist/assets/zh_HK-N4YN2WSI-Cvzl1V16.js +1519 -0
  287. package/packages/ui/dist/assets/zh_TW-CNCRXH6Z-BNelatfN.js +1519 -0
  288. package/packages/ui/dist/assets/zksync-DH7HK5U4-Dt4usFw6.js +1 -0
  289. package/packages/ui/dist/assets/zora-FYL5H3IO-iB4wygST.js +1 -0
  290. package/packages/ui/dist/index.html +14 -0
  291. package/scripts/check-docs.mjs +262 -0
  292. package/scripts/check-init.mjs +109 -0
  293. package/scripts/postinstall.js +366 -0
  294. package/templates/custom-mandate/.sail/contracts/interfaces/IPermission.sol +18 -0
  295. package/templates/custom-mandate/README.md +85 -0
  296. package/templates/custom-mandate/foundry.toml +8 -0
  297. package/templates/custom-mandate/mandates/BoundedCallPermission.sol +35 -0
  298. package/templates/custom-mandate/mandates/README.md +16 -0
  299. package/templates/dca-rebalancer/.cursor/rules +25 -0
  300. package/templates/dca-rebalancer/.env.example +6 -0
  301. package/templates/dca-rebalancer/.github/workflows/agent-tick.yml +32 -0
  302. package/templates/dca-rebalancer/.sail/.gitkeep +0 -0
  303. package/templates/dca-rebalancer/.sail/README.md +13 -0
  304. package/templates/dca-rebalancer/.sail/config.json +10 -0
  305. package/templates/dca-rebalancer/AGENTS.md +246 -0
  306. package/templates/dca-rebalancer/AGENT_PLAYBOOK.md +110 -0
  307. package/templates/dca-rebalancer/CLAUDE.md +2 -0
  308. package/templates/dca-rebalancer/README.md +16 -0
  309. package/templates/dca-rebalancer/_gitignore +13 -0
  310. package/templates/dca-rebalancer/docs/PERMISSION_MODEL.md +93 -0
  311. package/templates/dca-rebalancer/package.json +17 -0
  312. package/templates/dca-rebalancer/src/agent.ts +253 -0
  313. package/templates/dca-rebalancer/src/config.ts +27 -0
  314. package/templates/dca-rebalancer/src/mandate.ts +67 -0
  315. package/templates/dca-rebalancer/tsconfig.json +8 -0
  316. package/templates/dca-rebalancer/ui/README.md +3 -0
  317. package/templates/lifi-permissions/LifiBoundedApprovePermissionCloneable.sol +84 -0
  318. package/templates/lifi-permissions/LifiDiamondSwapPermissionCloneable.sol +97 -0
  319. package/templates/lifi-permissions/README.md +53 -0
@@ -0,0 +1,311 @@
1
+ /**
2
+ * SailKernel ABI — only the functions and events the SDK calls.
3
+ * Mirrors contracts/core/SailKernel.sol in SailProtocol.
4
+ *
5
+ * The `Call` tuple is (address target, uint256 value, bytes data), matching
6
+ * the `Call` struct in IBatchPermission.sol.
7
+ */
8
+ export const SailKernelAbi = [
9
+ // ── Account instantiation ────────────────────────────────────────────────
10
+ {
11
+ type: "function",
12
+ name: "createAccount",
13
+ stateMutability: "nonpayable",
14
+ inputs: [
15
+ { name: "safeFactory", type: "address" },
16
+ { name: "safeSingleton", type: "address" },
17
+ { name: "safeInitializer", type: "bytes" },
18
+ { name: "saltNonce", type: "uint256" },
19
+ { name: "permissionSigner", type: "address" },
20
+ { name: "manager", type: "address" },
21
+ { name: "feePolicy", type: "address" },
22
+ { name: "feeAsset", type: "address" },
23
+ ],
24
+ outputs: [{ name: "account", type: "address" }],
25
+ },
26
+ {
27
+ type: "function",
28
+ name: "registerAccount",
29
+ stateMutability: "nonpayable",
30
+ inputs: [
31
+ { name: "permissionSigner", type: "address" },
32
+ { name: "manager", type: "address" },
33
+ { name: "feePolicy", type: "address" },
34
+ ],
35
+ outputs: [],
36
+ },
37
+ // ── Manager rotation ──────────────────────────────────────────────────────
38
+ // Rotate the SMA's delegated signer. MUST be called by the Safe itself
39
+ // (msg.sender == account), i.e. wrapped in a Safe.execTransaction — see
40
+ // buildSetManagerExecTransaction in ./safe.js. Clears every attached mandate
41
+ // (fail-closed) and bumps the manager/batch nonce epoch.
42
+ {
43
+ type: "function",
44
+ name: "setManager",
45
+ stateMutability: "nonpayable",
46
+ inputs: [{ name: "newManager", type: "address" }],
47
+ outputs: [],
48
+ },
49
+ {
50
+ type: "function",
51
+ name: "getManager",
52
+ stateMutability: "view",
53
+ inputs: [{ name: "account", type: "address" }],
54
+ outputs: [{ name: "", type: "address" }],
55
+ },
56
+ // ── Permission registry ───────────────────────────────────────────────────
57
+ // Singular register: the verified onboarding/mandate-attach path. The owner
58
+ // signs a RegisterPermission EIP-712 message; the agent submits this with the
59
+ // exact registration fee as msg.value.
60
+ {
61
+ type: "function",
62
+ name: "registerPermission",
63
+ stateMutability: "payable",
64
+ inputs: [
65
+ { name: "account", type: "address" },
66
+ { name: "permission", type: "address" },
67
+ { name: "sig", type: "bytes" },
68
+ ],
69
+ outputs: [],
70
+ },
71
+ // Batch register used by mandate.attachBatch.
72
+ {
73
+ type: "function",
74
+ name: "registerPermissions",
75
+ stateMutability: "payable",
76
+ inputs: [
77
+ { name: "account", type: "address" },
78
+ { name: "permissions", type: "address[]" },
79
+ { name: "deadline", type: "uint256" },
80
+ { name: "sig", type: "bytes" },
81
+ ],
82
+ outputs: [],
83
+ },
84
+ // ── Manager dispatch ──────────────────────────────────────────────────────
85
+ {
86
+ type: "function",
87
+ name: "dispatch",
88
+ stateMutability: "nonpayable",
89
+ inputs: [
90
+ { name: "account", type: "address" },
91
+ { name: "permission", type: "address" },
92
+ { name: "target", type: "address" },
93
+ { name: "value", type: "uint256" },
94
+ { name: "data", type: "bytes" },
95
+ { name: "managerSig", type: "bytes" },
96
+ { name: "deadline", type: "uint256" },
97
+ ],
98
+ outputs: [],
99
+ },
100
+ {
101
+ type: "function",
102
+ name: "dispatchBatch",
103
+ stateMutability: "nonpayable",
104
+ inputs: [
105
+ { name: "account", type: "address" },
106
+ { name: "permission", type: "address" },
107
+ {
108
+ name: "calls",
109
+ type: "tuple[]",
110
+ components: [
111
+ { name: "target", type: "address" },
112
+ { name: "value", type: "uint256" },
113
+ { name: "data", type: "bytes" },
114
+ ],
115
+ },
116
+ { name: "managerSig", type: "bytes" },
117
+ { name: "deadline", type: "uint256" },
118
+ ],
119
+ outputs: [],
120
+ },
121
+ {
122
+ type: "function",
123
+ name: "previewBatch",
124
+ stateMutability: "view",
125
+ inputs: [
126
+ { name: "account", type: "address" },
127
+ { name: "permission", type: "address" },
128
+ {
129
+ name: "calls",
130
+ type: "tuple[]",
131
+ components: [
132
+ { name: "target", type: "address" },
133
+ { name: "value", type: "uint256" },
134
+ { name: "data", type: "bytes" },
135
+ ],
136
+ },
137
+ ],
138
+ outputs: [
139
+ { name: "approved", type: "bool" },
140
+ { name: "reason", type: "string" },
141
+ ],
142
+ },
143
+ // ── Fees ──────────────────────────────────────────────────────────────────
144
+ {
145
+ type: "function",
146
+ name: "collectFees",
147
+ stateMutability: "nonpayable",
148
+ inputs: [
149
+ { name: "account", type: "address" },
150
+ { name: "grossFee", type: "uint256" },
151
+ { name: "currentNav", type: "uint256" },
152
+ { name: "feeToken", type: "address" },
153
+ ],
154
+ outputs: [],
155
+ },
156
+ // ── Principal tracking ─────────────────────────────────────────────────────
157
+ {
158
+ type: "function",
159
+ name: "recordDeposit",
160
+ stateMutability: "nonpayable",
161
+ inputs: [
162
+ { name: "account", type: "address" },
163
+ { name: "amount", type: "uint256" },
164
+ ],
165
+ outputs: [],
166
+ },
167
+ {
168
+ type: "function",
169
+ name: "recordWithdrawal",
170
+ stateMutability: "nonpayable",
171
+ inputs: [
172
+ { name: "account", type: "address" },
173
+ { name: "amount", type: "uint256" },
174
+ ],
175
+ outputs: [],
176
+ },
177
+ // ── Views ───────────────────────────────────────────────────────────────────
178
+ {
179
+ type: "function",
180
+ name: "getPermissions",
181
+ stateMutability: "view",
182
+ inputs: [{ name: "account", type: "address" }],
183
+ outputs: [{ name: "", type: "address[]" }],
184
+ },
185
+ {
186
+ type: "function",
187
+ name: "getPermissionsWithInfo",
188
+ stateMutability: "view",
189
+ inputs: [{ name: "account", type: "address" }],
190
+ outputs: [
191
+ {
192
+ name: "infos",
193
+ type: "tuple[]",
194
+ components: [
195
+ { name: "permission", type: "address" },
196
+ { name: "isBatch", type: "bool" },
197
+ { name: "hasIntrospection", type: "bool" },
198
+ { name: "permissionId", type: "bytes32" },
199
+ { name: "permissionVersion", type: "bytes32" },
200
+ ],
201
+ },
202
+ ],
203
+ },
204
+ {
205
+ type: "function",
206
+ name: "isPermissionRegistered",
207
+ stateMutability: "view",
208
+ inputs: [
209
+ { name: "account", type: "address" },
210
+ { name: "permission", type: "address" },
211
+ ],
212
+ outputs: [{ name: "", type: "bool" }],
213
+ },
214
+ {
215
+ type: "function",
216
+ name: "configs",
217
+ stateMutability: "view",
218
+ inputs: [{ name: "account", type: "address" }],
219
+ outputs: [
220
+ { name: "permissionSigner", type: "address" },
221
+ { name: "manager", type: "address" },
222
+ { name: "feePolicy", type: "address" },
223
+ { name: "sessionActive", type: "bool" },
224
+ ],
225
+ },
226
+ {
227
+ type: "function",
228
+ name: "registered",
229
+ stateMutability: "view",
230
+ inputs: [{ name: "account", type: "address" }],
231
+ outputs: [{ name: "", type: "bool" }],
232
+ },
233
+ {
234
+ type: "function",
235
+ name: "managerNonces",
236
+ stateMutability: "view",
237
+ inputs: [{ name: "account", type: "address" }],
238
+ outputs: [{ name: "", type: "uint256" }],
239
+ },
240
+ {
241
+ type: "function",
242
+ name: "batchNonces",
243
+ stateMutability: "view",
244
+ inputs: [{ name: "account", type: "address" }],
245
+ outputs: [{ name: "", type: "uint256" }],
246
+ },
247
+ {
248
+ type: "function",
249
+ name: "signerNonces",
250
+ stateMutability: "view",
251
+ inputs: [{ name: "account", type: "address" }],
252
+ outputs: [{ name: "", type: "uint256" }],
253
+ },
254
+ // ── Events ────────────────────────────────────────────────────────────────
255
+ {
256
+ type: "event",
257
+ name: "AccountRegistered",
258
+ inputs: [
259
+ { name: "account", type: "address", indexed: true },
260
+ { name: "permissionSigner", type: "address", indexed: true },
261
+ { name: "manager", type: "address", indexed: true },
262
+ ],
263
+ },
264
+ {
265
+ type: "event",
266
+ name: "PermissionRegistered",
267
+ inputs: [
268
+ { name: "account", type: "address", indexed: true },
269
+ { name: "permission", type: "address", indexed: true },
270
+ ],
271
+ },
272
+ {
273
+ type: "event",
274
+ name: "ManagerChanged",
275
+ inputs: [
276
+ { name: "account", type: "address", indexed: true },
277
+ { name: "oldManager", type: "address", indexed: true },
278
+ { name: "newManager", type: "address", indexed: true },
279
+ ],
280
+ },
281
+ {
282
+ type: "event",
283
+ name: "PermissionRevoked",
284
+ inputs: [
285
+ { name: "account", type: "address", indexed: true },
286
+ { name: "permission", type: "address", indexed: true },
287
+ ],
288
+ },
289
+ {
290
+ type: "event",
291
+ name: "Dispatched",
292
+ inputs: [
293
+ { name: "account", type: "address", indexed: true },
294
+ { name: "permission", type: "address", indexed: true },
295
+ { name: "target", type: "address", indexed: false },
296
+ { name: "selector", type: "bytes4", indexed: false },
297
+ { name: "value", type: "uint256", indexed: false },
298
+ ],
299
+ },
300
+ {
301
+ type: "event",
302
+ name: "BatchDispatched",
303
+ inputs: [
304
+ { name: "account", type: "address", indexed: true },
305
+ { name: "permission", type: "address", indexed: true },
306
+ { name: "batchHash", type: "bytes32", indexed: false },
307
+ { name: "callCount", type: "uint256", indexed: false },
308
+ ],
309
+ },
310
+ ];
311
+ //# sourceMappingURL=SailKernel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SailKernel.js","sourceRoot":"","sources":["../../src/abis/SailKernel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { SailKernelAbi } from "./SailKernel.js";
2
+ export { MandateFactoryAbi } from "./MandateFactory.js";
3
+ export { SailGovernanceAbi } from "./SailGovernance.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abis/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Browser-safe barrel for the contract ABIs. These are pure data (no Node
2
+ // dependencies), so the UI can import them via `@sail/sdk/abis` without pulling
3
+ // in the Node-only keyring through the main entrypoint.
4
+ export { SailKernelAbi } from "./SailKernel.js";
5
+ export { MandateFactoryAbi } from "./MandateFactory.js";
6
+ export { SailGovernanceAbi } from "./SailGovernance.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/abis/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,gFAAgF;AAChF,wDAAwD;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Kernel capability detection.
3
+ *
4
+ * The Sail Protocol kernel has shipped in two incompatible dispatch models, and
5
+ * a given chain may run either one:
6
+ *
7
+ * - "conjunctive" (older): dispatch(account, target, value, data, sig, deadline)
8
+ * with NO permission argument; the kernel checks EVERY registered permission
9
+ * and ALL must approve. The signed EIP-712 Dispatch struct has no `permission`
10
+ * field. RegisterPermission has no `deadline` field.
11
+ *
12
+ * - "selective" (newer): dispatch(account, permission, target, value, data, sig, deadline)
13
+ * naming ONE permission per call. The signed Dispatch struct includes `permission`.
14
+ *
15
+ * The SDK's typed-data and calldata must match whatever is actually deployed, or
16
+ * every dispatch reverts with InvalidManagerSignature. Rather than guess from a
17
+ * version string, we read the kernel's public EIP-712 typehash constants on-chain
18
+ * and match them against the canonical hashes for each model. Results are cached
19
+ * per kernel address.
20
+ */
21
+ import { type Address, type PublicClient } from "viem";
22
+ /** Which dispatch model a deployed kernel implements. */
23
+ export type DispatchModel = "conjunctive" | "selective";
24
+ /** Canonical EIP-712 type strings for each known kernel version. */
25
+ export declare const DISPATCH_TYPE_STRINGS: {
26
+ readonly conjunctive: "Dispatch(address account,address target,uint256 value,bytes32 dataHash,uint256 nonce,uint256 deadline)";
27
+ readonly selective: "Dispatch(address account,address permission,address target,uint256 value,bytes32 dataHash,uint256 nonce,uint256 deadline)";
28
+ };
29
+ export declare const REGISTER_PERMISSION_TYPE_STRINGS: {
30
+ readonly noDeadline: "RegisterPermission(address account,address permission,uint256 nonce)";
31
+ readonly withDeadline: "RegisterPermission(address account,address permission,uint256 nonce,uint256 deadline)";
32
+ };
33
+ /** Precomputed typehashes (keccak256 of the canonical type strings). */
34
+ export declare const DISPATCH_TYPEHASHES: {
35
+ readonly conjunctive: `0x${string}`;
36
+ readonly selective: `0x${string}`;
37
+ };
38
+ export declare const REGISTER_PERMISSION_TYPEHASHES: {
39
+ readonly noDeadline: `0x${string}`;
40
+ readonly withDeadline: `0x${string}`;
41
+ };
42
+ /** Detected capabilities of a deployed kernel. */
43
+ export type KernelCapabilities = {
44
+ /** Kernel address these capabilities were detected for. */
45
+ kernel: Address;
46
+ /** Dispatch model the kernel implements. */
47
+ dispatchModel: DispatchModel;
48
+ /** Whether kernel.dispatch takes a `permission` argument (true for selective). */
49
+ dispatchHasPermissionParam: boolean;
50
+ /** Whether the signed Dispatch EIP-712 struct includes a `permission` field. */
51
+ dispatchSignsPermission: boolean;
52
+ /** Whether RegisterPermission's EIP-712 struct includes a `deadline` field. */
53
+ registerPermissionHasDeadline: boolean;
54
+ /** The on-chain DISPATCH_TYPEHASH that was read (or computed) for reference. */
55
+ dispatchTypehash: `0x${string}`;
56
+ /** The on-chain REGISTER_PERMISSION_TYPEHASH, when readable. */
57
+ registerPermissionTypehash?: `0x${string}`;
58
+ /** How the model was determined. */
59
+ source: "onchain-typehash" | "static-hint";
60
+ };
61
+ /**
62
+ * Detect a kernel's dispatch model by reading its on-chain typehash constants.
63
+ *
64
+ * @param publicClient viem public client bound to the kernel's chain
65
+ * @param kernel deployed SailKernel address
66
+ * @param opts.chainId chain id for cache keying (defaults to publicClient.chain.id)
67
+ * @param opts.staticModel optional hint used only if the on-chain read fails
68
+ * @param opts.force bypass the per-kernel cache
69
+ */
70
+ export declare function detectKernelCapabilities(publicClient: PublicClient, kernel: Address, opts?: {
71
+ chainId?: number;
72
+ staticModel?: DispatchModel;
73
+ force?: boolean;
74
+ }): Promise<KernelCapabilities>;
75
+ /** Clear the capability cache (mainly for tests / forced re-detection). */
76
+ export declare function clearCapabilityCache(): void;
77
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAa,KAAK,YAAY,EAAW,MAAM,MAAM,CAAC;AAE3E,yDAAyD;AACzD,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,qBAAqB;;;CAKxB,CAAC;AAEX,eAAO,MAAM,gCAAgC;;;CAInC,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAEX,eAAO,MAAM,8BAA8B;;;CAGjC,CAAC;AAEX,kDAAkD;AAClD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,2DAA2D;IAC3D,MAAM,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,aAAa,EAAE,aAAa,CAAC;IAC7B,kFAAkF;IAClF,0BAA0B,EAAE,OAAO,CAAC;IACpC,gFAAgF;IAChF,uBAAuB,EAAE,OAAO,CAAC;IACjC,+EAA+E;IAC/E,6BAA6B,EAAE,OAAO,CAAC;IACvC,gFAAgF;IAChF,gBAAgB,EAAE,KAAK,MAAM,EAAE,CAAC;IAChC,gEAAgE;IAChE,0BAA0B,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3C,oCAAoC;IACpC,MAAM,EAAE,kBAAkB,GAAG,aAAa,CAAC;CAC5C,CAAC;AAwEF;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,OAAO,EACf,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACxE,OAAO,CAAC,kBAAkB,CAAC,CAwD7B;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Kernel capability detection.
3
+ *
4
+ * The Sail Protocol kernel has shipped in two incompatible dispatch models, and
5
+ * a given chain may run either one:
6
+ *
7
+ * - "conjunctive" (older): dispatch(account, target, value, data, sig, deadline)
8
+ * with NO permission argument; the kernel checks EVERY registered permission
9
+ * and ALL must approve. The signed EIP-712 Dispatch struct has no `permission`
10
+ * field. RegisterPermission has no `deadline` field.
11
+ *
12
+ * - "selective" (newer): dispatch(account, permission, target, value, data, sig, deadline)
13
+ * naming ONE permission per call. The signed Dispatch struct includes `permission`.
14
+ *
15
+ * The SDK's typed-data and calldata must match whatever is actually deployed, or
16
+ * every dispatch reverts with InvalidManagerSignature. Rather than guess from a
17
+ * version string, we read the kernel's public EIP-712 typehash constants on-chain
18
+ * and match them against the canonical hashes for each model. Results are cached
19
+ * per kernel address.
20
+ */
21
+ import { keccak256, toBytes } from "viem";
22
+ /** Canonical EIP-712 type strings for each known kernel version. */
23
+ export const DISPATCH_TYPE_STRINGS = {
24
+ conjunctive: "Dispatch(address account,address target,uint256 value,bytes32 dataHash,uint256 nonce,uint256 deadline)",
25
+ selective: "Dispatch(address account,address permission,address target,uint256 value,bytes32 dataHash,uint256 nonce,uint256 deadline)",
26
+ };
27
+ export const REGISTER_PERMISSION_TYPE_STRINGS = {
28
+ noDeadline: "RegisterPermission(address account,address permission,uint256 nonce)",
29
+ withDeadline: "RegisterPermission(address account,address permission,uint256 nonce,uint256 deadline)",
30
+ };
31
+ /** Precomputed typehashes (keccak256 of the canonical type strings). */
32
+ export const DISPATCH_TYPEHASHES = {
33
+ conjunctive: keccak256(toBytes(DISPATCH_TYPE_STRINGS.conjunctive)),
34
+ selective: keccak256(toBytes(DISPATCH_TYPE_STRINGS.selective)),
35
+ };
36
+ export const REGISTER_PERMISSION_TYPEHASHES = {
37
+ noDeadline: keccak256(toBytes(REGISTER_PERMISSION_TYPE_STRINGS.noDeadline)),
38
+ withDeadline: keccak256(toBytes(REGISTER_PERMISSION_TYPE_STRINGS.withDeadline)),
39
+ };
40
+ /** Minimal ABI for the kernel's public typehash constant getters. */
41
+ const TYPEHASH_GETTER_ABI = [
42
+ {
43
+ type: "function",
44
+ name: "DISPATCH_TYPEHASH",
45
+ stateMutability: "view",
46
+ inputs: [],
47
+ outputs: [{ type: "bytes32" }],
48
+ },
49
+ {
50
+ type: "function",
51
+ name: "REGISTER_PERMISSION_TYPEHASH",
52
+ stateMutability: "view",
53
+ inputs: [],
54
+ outputs: [{ type: "bytes32" }],
55
+ },
56
+ ];
57
+ const cache = new Map();
58
+ function cacheKey(chainId, kernel) {
59
+ return `${chainId}:${kernel.toLowerCase()}`;
60
+ }
61
+ /**
62
+ * Build capabilities from a known DISPATCH_TYPEHASH. Throws if the typehash does
63
+ * not match any known kernel version (a loud failure beats silently signing the
64
+ * wrong struct).
65
+ */
66
+ function fromDispatchTypehash(kernel, dispatchTypehash, registerPermissionTypehash, source) {
67
+ let dispatchModel;
68
+ if (dispatchTypehash === DISPATCH_TYPEHASHES.conjunctive) {
69
+ dispatchModel = "conjunctive";
70
+ }
71
+ else if (dispatchTypehash === DISPATCH_TYPEHASHES.selective) {
72
+ dispatchModel = "selective";
73
+ }
74
+ else {
75
+ throw new Error(`Unrecognized kernel DISPATCH_TYPEHASH ${dispatchTypehash} for ${kernel}. ` +
76
+ "The SDK cannot safely sign dispatches for this kernel version. " +
77
+ `Known: conjunctive=${DISPATCH_TYPEHASHES.conjunctive}, selective=${DISPATCH_TYPEHASHES.selective}.`);
78
+ }
79
+ // Infer RegisterPermission deadline support from its typehash when available,
80
+ // else fall back to the per-model default (conjunctive shipped without it).
81
+ let registerPermissionHasDeadline = dispatchModel === "selective";
82
+ if (registerPermissionTypehash === REGISTER_PERMISSION_TYPEHASHES.withDeadline) {
83
+ registerPermissionHasDeadline = true;
84
+ }
85
+ else if (registerPermissionTypehash === REGISTER_PERMISSION_TYPEHASHES.noDeadline) {
86
+ registerPermissionHasDeadline = false;
87
+ }
88
+ const selective = dispatchModel === "selective";
89
+ return {
90
+ kernel,
91
+ dispatchModel,
92
+ dispatchHasPermissionParam: selective,
93
+ dispatchSignsPermission: selective,
94
+ registerPermissionHasDeadline,
95
+ dispatchTypehash,
96
+ registerPermissionTypehash,
97
+ source,
98
+ };
99
+ }
100
+ /**
101
+ * Detect a kernel's dispatch model by reading its on-chain typehash constants.
102
+ *
103
+ * @param publicClient viem public client bound to the kernel's chain
104
+ * @param kernel deployed SailKernel address
105
+ * @param opts.chainId chain id for cache keying (defaults to publicClient.chain.id)
106
+ * @param opts.staticModel optional hint used only if the on-chain read fails
107
+ * @param opts.force bypass the per-kernel cache
108
+ */
109
+ export async function detectKernelCapabilities(publicClient, kernel, opts) {
110
+ const chainId = opts?.chainId ?? publicClient.chain?.id ?? 0;
111
+ const key = cacheKey(chainId, kernel);
112
+ if (!opts?.force) {
113
+ const hit = cache.get(key);
114
+ if (hit)
115
+ return hit;
116
+ }
117
+ let dispatchTypehash;
118
+ let registerPermissionTypehash;
119
+ try {
120
+ dispatchTypehash = (await publicClient.readContract({
121
+ address: kernel,
122
+ abi: TYPEHASH_GETTER_ABI,
123
+ functionName: "DISPATCH_TYPEHASH",
124
+ }));
125
+ }
126
+ catch {
127
+ // getter absent / not a typehash-exposing kernel — handled below
128
+ }
129
+ try {
130
+ registerPermissionTypehash = (await publicClient.readContract({
131
+ address: kernel,
132
+ abi: TYPEHASH_GETTER_ABI,
133
+ functionName: "REGISTER_PERMISSION_TYPEHASH",
134
+ }));
135
+ }
136
+ catch {
137
+ // optional — model is determined by DISPATCH_TYPEHASH alone
138
+ }
139
+ let caps;
140
+ if (dispatchTypehash) {
141
+ caps = fromDispatchTypehash(kernel, dispatchTypehash, registerPermissionTypehash, "onchain-typehash");
142
+ }
143
+ else if (opts?.staticModel) {
144
+ // Could not read the typehash; fall back to the caller-supplied hint.
145
+ caps = fromDispatchTypehash(kernel, DISPATCH_TYPEHASHES[opts.staticModel], undefined, "static-hint");
146
+ }
147
+ else {
148
+ throw new Error(`Could not read DISPATCH_TYPEHASH from kernel ${kernel}, and no staticModel hint was given. ` +
149
+ "Pass opts.staticModel ('conjunctive' | 'selective') to proceed without on-chain detection.");
150
+ }
151
+ cache.set(key, caps);
152
+ return caps;
153
+ }
154
+ /** Clear the capability cache (mainly for tests / forced re-detection). */
155
+ export function clearCapabilityCache() {
156
+ cache.clear();
157
+ }
158
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type Account as ViemAccount, type Chain, type Transport, type WalletClient } from "viem";
2
+ import { type KernelCapabilities } from "./capabilities.js";
3
+ import type { AgentContext, IAccountNamespace, IDispatchNamespace, IFeesNamespace, IMandateNamespace, IPrincipalNamespace, ISailorClient, ISessionNamespace, IStrategyNamespace, SailorClientConfig } from "./types.js";
4
+ export type { AgentContext };
5
+ export { SailKernelAbi } from "./abis/SailKernel.js";
6
+ export { MandateFactoryAbi } from "./abis/MandateFactory.js";
7
+ /** A WalletClient with bound account + chain, used for state-changing calls. */
8
+ type Signer = WalletClient<Transport, Chain, ViemAccount>;
9
+ /** Top-level client for all Sailor operations. Instantiate once per chain. */
10
+ export declare class SailorClient implements ISailorClient {
11
+ readonly account: IAccountNamespace;
12
+ readonly mandate: IMandateNamespace;
13
+ readonly dispatch: IDispatchNamespace;
14
+ readonly strategy: IStrategyNamespace;
15
+ readonly session: ISessionNamespace;
16
+ readonly fees: IFeesNamespace;
17
+ readonly principal: IPrincipalNamespace;
18
+ private readonly config;
19
+ private readonly walletClient?;
20
+ private readonly publicClient;
21
+ constructor(config: SailorClientConfig, walletClient?: Signer);
22
+ /**
23
+ * Returns a new client bound to a WalletClient for state-changing calls.
24
+ * Reads work without a signer; writes (dispatch, fees, principal, account
25
+ * create, mandate attach) require one.
26
+ */
27
+ withSigner(walletClient: Signer): SailorClient;
28
+ /**
29
+ * Detect (and cache) the deployed kernel's dispatch model and EIP-712 shape by
30
+ * reading its on-chain typehash constants. Falls back to the bundled
31
+ * deployment's static `dispatchModel` hint if the on-chain read is unavailable.
32
+ * Call this during onboarding/preflight to fail loudly on a kernel the SDK
33
+ * cannot safely sign for.
34
+ */
35
+ capabilities(): Promise<KernelCapabilities>;
36
+ }
37
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,IAAI,WAAW,EAC3B,KAAK,KAAK,EAQV,KAAK,SAAS,EACd,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AAEd,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,mBAAmB,CAAC;AAe3B,OAAO,KAAK,EAGV,YAAY,EAOZ,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EAEd,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAQlB,kBAAkB,EAKnB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,gFAAgF;AAChF,KAAK,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AA4tB1D,8EAA8E;AAC9E,qBAAa,YAAa,YAAW,aAAa;IAChD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAExC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;gBAEhC,MAAM,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAAE,MAAM;IAe7D;;;;OAIG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY;IAI9C;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAYlD"}