@dev.sail.money/sailor 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +111 -0
- package/LICENSE +21 -0
- package/README.md +337 -0
- package/docs/PERMISSION_MODEL.md +93 -0
- package/examples/permissions/BoundedBet_Limitless_Base.sol +96 -0
- package/examples/permissions/BoundedBorrow_AaveV3_Arbitrum.sol +94 -0
- package/examples/permissions/BoundedPerp_GMXv2_Arbitrum.sol +143 -0
- package/examples/permissions/BoundedSwap_UniswapV3_Base.sol +113 -0
- package/examples/permissions/BoundedSwap_UniswapV4_Unichain.sol +144 -0
- package/examples/permissions/BoundedTransfer_ERC20_Ethereum.sol +73 -0
- package/examples/permissions/README.md +52 -0
- package/examples/permissions/foundry.toml +10 -0
- package/examples/permissions/interfaces/IPermission.sol +18 -0
- package/package.json +39 -0
- package/packages/cli/README.md +34 -0
- package/packages/cli/dist/index.cjs +42801 -0
- package/packages/cli/dist/server.cjs +51202 -0
- package/packages/sdk/README.md +65 -0
- package/packages/sdk/dist/abis/MandateFactory.d.ts +140 -0
- package/packages/sdk/dist/abis/MandateFactory.d.ts.map +1 -0
- package/packages/sdk/dist/abis/MandateFactory.js +93 -0
- package/packages/sdk/dist/abis/MandateFactory.js.map +1 -0
- package/packages/sdk/dist/abis/SailGovernance.d.ts +57 -0
- package/packages/sdk/dist/abis/SailGovernance.d.ts.map +1 -0
- package/packages/sdk/dist/abis/SailGovernance.js +52 -0
- package/packages/sdk/dist/abis/SailGovernance.js.map +1 -0
- package/packages/sdk/dist/abis/SailKernel.d.ts +466 -0
- package/packages/sdk/dist/abis/SailKernel.d.ts.map +1 -0
- package/packages/sdk/dist/abis/SailKernel.js +311 -0
- package/packages/sdk/dist/abis/SailKernel.js.map +1 -0
- package/packages/sdk/dist/abis/index.d.ts +4 -0
- package/packages/sdk/dist/abis/index.d.ts.map +1 -0
- package/packages/sdk/dist/abis/index.js +7 -0
- package/packages/sdk/dist/abis/index.js.map +1 -0
- package/packages/sdk/dist/capabilities.d.ts +77 -0
- package/packages/sdk/dist/capabilities.d.ts.map +1 -0
- package/packages/sdk/dist/capabilities.js +158 -0
- package/packages/sdk/dist/capabilities.js.map +1 -0
- package/packages/sdk/dist/client.d.ts +37 -0
- package/packages/sdk/dist/client.d.ts.map +1 -0
- package/packages/sdk/dist/client.js +646 -0
- package/packages/sdk/dist/client.js.map +1 -0
- package/packages/sdk/dist/deployments.d.ts +82 -0
- package/packages/sdk/dist/deployments.d.ts.map +1 -0
- package/packages/sdk/dist/deployments.js +197 -0
- package/packages/sdk/dist/deployments.js.map +1 -0
- package/packages/sdk/dist/discovery.d.ts +10 -0
- package/packages/sdk/dist/discovery.d.ts.map +1 -0
- package/packages/sdk/dist/discovery.js +41 -0
- package/packages/sdk/dist/discovery.js.map +1 -0
- package/packages/sdk/dist/eip712.d.ts +257 -0
- package/packages/sdk/dist/eip712.d.ts.map +1 -0
- package/packages/sdk/dist/eip712.js +255 -0
- package/packages/sdk/dist/eip712.js.map +1 -0
- package/packages/sdk/dist/errors.d.ts +47 -0
- package/packages/sdk/dist/errors.d.ts.map +1 -0
- package/packages/sdk/dist/errors.js +168 -0
- package/packages/sdk/dist/errors.js.map +1 -0
- package/packages/sdk/dist/fees.d.ts +16 -0
- package/packages/sdk/dist/fees.d.ts.map +1 -0
- package/packages/sdk/dist/fees.js +51 -0
- package/packages/sdk/dist/fees.js.map +1 -0
- package/packages/sdk/dist/index.d.ts +23 -0
- package/packages/sdk/dist/index.d.ts.map +1 -0
- package/packages/sdk/dist/index.js +16 -0
- package/packages/sdk/dist/index.js.map +1 -0
- package/packages/sdk/dist/intelligence.d.ts +923 -0
- package/packages/sdk/dist/intelligence.d.ts.map +1 -0
- package/packages/sdk/dist/intelligence.js +357 -0
- package/packages/sdk/dist/intelligence.js.map +1 -0
- package/packages/sdk/dist/keyring.d.ts +60 -0
- package/packages/sdk/dist/keyring.d.ts.map +1 -0
- package/packages/sdk/dist/keyring.js +159 -0
- package/packages/sdk/dist/keyring.js.map +1 -0
- package/packages/sdk/dist/lifi.d.ts +83 -0
- package/packages/sdk/dist/lifi.d.ts.map +1 -0
- package/packages/sdk/dist/lifi.js +69 -0
- package/packages/sdk/dist/lifi.js.map +1 -0
- package/packages/sdk/dist/safe.d.ts +158 -0
- package/packages/sdk/dist/safe.d.ts.map +1 -0
- package/packages/sdk/dist/safe.js +163 -0
- package/packages/sdk/dist/safe.js.map +1 -0
- package/packages/sdk/dist/signing.d.ts +106 -0
- package/packages/sdk/dist/signing.d.ts.map +1 -0
- package/packages/sdk/dist/signing.js +2 -0
- package/packages/sdk/dist/signing.js.map +1 -0
- package/packages/sdk/dist/templates/ammLiquidity.d.ts +16 -0
- package/packages/sdk/dist/templates/ammLiquidity.d.ts.map +1 -0
- package/packages/sdk/dist/templates/ammLiquidity.js +60 -0
- package/packages/sdk/dist/templates/ammLiquidity.js.map +1 -0
- package/packages/sdk/dist/templates/approveAndCallBatch.d.ts +14 -0
- package/packages/sdk/dist/templates/approveAndCallBatch.d.ts.map +1 -0
- package/packages/sdk/dist/templates/approveAndCallBatch.js +53 -0
- package/packages/sdk/dist/templates/approveAndCallBatch.js.map +1 -0
- package/packages/sdk/dist/templates/boundedBorrow.d.ts +16 -0
- package/packages/sdk/dist/templates/boundedBorrow.d.ts.map +1 -0
- package/packages/sdk/dist/templates/boundedBorrow.js +56 -0
- package/packages/sdk/dist/templates/boundedBorrow.js.map +1 -0
- package/packages/sdk/dist/templates/boundedSwap.d.ts +16 -0
- package/packages/sdk/dist/templates/boundedSwap.d.ts.map +1 -0
- package/packages/sdk/dist/templates/boundedSwap.js +56 -0
- package/packages/sdk/dist/templates/boundedSwap.js.map +1 -0
- package/packages/sdk/dist/templates/defiBundle.d.ts +14 -0
- package/packages/sdk/dist/templates/defiBundle.d.ts.map +1 -0
- package/packages/sdk/dist/templates/defiBundle.js +52 -0
- package/packages/sdk/dist/templates/defiBundle.js.map +1 -0
- package/packages/sdk/dist/templates/index.d.ts +15 -0
- package/packages/sdk/dist/templates/index.d.ts.map +1 -0
- package/packages/sdk/dist/templates/index.js +8 -0
- package/packages/sdk/dist/templates/index.js.map +1 -0
- package/packages/sdk/dist/templates/pendle.d.ts +14 -0
- package/packages/sdk/dist/templates/pendle.d.ts.map +1 -0
- package/packages/sdk/dist/templates/pendle.js +52 -0
- package/packages/sdk/dist/templates/pendle.js.map +1 -0
- package/packages/sdk/dist/templates/transferTarget.d.ts +10 -0
- package/packages/sdk/dist/templates/transferTarget.d.ts.map +1 -0
- package/packages/sdk/dist/templates/transferTarget.js +42 -0
- package/packages/sdk/dist/templates/transferTarget.js.map +1 -0
- package/packages/sdk/dist/types.d.ts +382 -0
- package/packages/sdk/dist/types.d.ts.map +1 -0
- package/packages/sdk/dist/types.js +2 -0
- package/packages/sdk/dist/types.js.map +1 -0
- package/packages/sdk/package.json +52 -0
- package/packages/ui/dist/assets/Arc-VDBY7LNS-BChRXCXW.js +1 -0
- package/packages/ui/dist/assets/Brave-BRAKJXDS-mq-Xo37j.js +1 -0
- package/packages/ui/dist/assets/Browser-76IHF3Y2-BMhRaC5Z.js +1 -0
- package/packages/ui/dist/assets/Chrome-65Q5P54Y-DR9MQEVr.js +1 -0
- package/packages/ui/dist/assets/Edge-XSPUTORV-DEoZslQE.js +1 -0
- package/packages/ui/dist/assets/Firefox-AAHGJQIP-Bp_Hm04m.js +1 -0
- package/packages/ui/dist/assets/Linux-OO4TNCLJ-B0aw93n9.js +1 -0
- package/packages/ui/dist/assets/Macos-MW4AE7LN-Vvm8Drw3.js +1 -0
- package/packages/ui/dist/assets/Opera-KQZLSACL-Cwv5MDFy.js +1 -0
- package/packages/ui/dist/assets/Safari-ZPL37GXR-C4Ggg6rz.js +1 -0
- package/packages/ui/dist/assets/Windows-PPTHQER6-BlyV2p7Y.js +1 -0
- package/packages/ui/dist/assets/add-DaJhwIBV.js +15 -0
- package/packages/ui/dist/assets/all-wallets-BUxsqWXi.js +6 -0
- package/packages/ui/dist/assets/apechain-SX5YFU6N-q5qBv-mp.js +1 -0
- package/packages/ui/dist/assets/app-store-DkltwTqE.js +17 -0
- package/packages/ui/dist/assets/apple-owVOeaIT.js +18 -0
- package/packages/ui/dist/assets/ar_AR-LIPSOZP5-BQrIDibT.js +1519 -0
- package/packages/ui/dist/assets/arbitrum-WURIBY6W-CqVkHBr5.js +1 -0
- package/packages/ui/dist/assets/arrow-bottom-D2mmNJve.js +8 -0
- package/packages/ui/dist/assets/arrow-bottom-circle-CbNYijx-.js +11 -0
- package/packages/ui/dist/assets/arrow-left-DJB61s4C.js +8 -0
- package/packages/ui/dist/assets/arrow-right-BBrsQ9R4.js +8 -0
- package/packages/ui/dist/assets/arrow-top-Cil6bOc8.js +8 -0
- package/packages/ui/dist/assets/assets-Q6ZU7ZJ5-P8HioiAD.js +1 -0
- package/packages/ui/dist/assets/avalanche-KOMJD3XY-Dsn_JPR4.js +1 -0
- package/packages/ui/dist/assets/bank-CbwEmRo3.js +14 -0
- package/packages/ui/dist/assets/base-OAXLRA4F-CoYTVIiL.js +1 -0
- package/packages/ui/dist/assets/base-QS6CYWIN-CsjdbWCf.js +1 -0
- package/packages/ui/dist/assets/basic-CLNfjw3m.js +2128 -0
- package/packages/ui/dist/assets/berachain-NJECWIVC-DumxnFvf.js +1 -0
- package/packages/ui/dist/assets/blast-V555OVXZ-BbhJh1tj.js +1 -0
- package/packages/ui/dist/assets/browser-B5TtF4Pb.js +14 -0
- package/packages/ui/dist/assets/bsc-N647EYR2-B2nLKXWV.js +1 -0
- package/packages/ui/dist/assets/card-CO7BVB-C.js +14 -0
- package/packages/ui/dist/assets/ccip-2W7K3_J3.js +1 -0
- package/packages/ui/dist/assets/celo-GEP4TUHG-CenIBYLU.js +1 -0
- package/packages/ui/dist/assets/checkmark-BEtSHq9m.js +11 -0
- package/packages/ui/dist/assets/checkmark-bold-D9xGHzPE.js +8 -0
- package/packages/ui/dist/assets/chevron-bottom-BDztht6i.js +8 -0
- package/packages/ui/dist/assets/chevron-left-EV4GFNbc.js +8 -0
- package/packages/ui/dist/assets/chevron-right-B4_bB9oR.js +8 -0
- package/packages/ui/dist/assets/chevron-top-D54xPNzF.js +8 -0
- package/packages/ui/dist/assets/chrome-store-DYUpAJJq.js +61 -0
- package/packages/ui/dist/assets/clock-Ca1T1Soz.js +8 -0
- package/packages/ui/dist/assets/close-BZqWjurK.js +8 -0
- package/packages/ui/dist/assets/coinPlaceholder-e6fl2XDo.js +8 -0
- package/packages/ui/dist/assets/compass-DCLC7zIh.js +8 -0
- package/packages/ui/dist/assets/connect-UA7M4XW6-IY3X6Bmr.js +1 -0
- package/packages/ui/dist/assets/copy-Th2AaD-O.js +15 -0
- package/packages/ui/dist/assets/core-Ckx_cyuH.js +907 -0
- package/packages/ui/dist/assets/create-FASO7PVG-D_rvSpre.js +1 -0
- package/packages/ui/dist/assets/cronos-HJPAQTAE-BEOvlOC4.js +1 -0
- package/packages/ui/dist/assets/cursor-DV7rOqbJ.js +3 -0
- package/packages/ui/dist/assets/cursor-transparent-BKHeABKB.js +12 -0
- package/packages/ui/dist/assets/de_DE-YE3KOFHU-BRt5ztUe.js +1519 -0
- package/packages/ui/dist/assets/degen-FQQ4XGHB-CeHTs88l.js +1 -0
- package/packages/ui/dist/assets/desktop-CBjY8t6F.js +9 -0
- package/packages/ui/dist/assets/disconnect-DbSs2cli.js +8 -0
- package/packages/ui/dist/assets/discord-ZlLOAUkM.js +17 -0
- package/packages/ui/dist/assets/es_419-7LMPU7G4-DH7rM0yQ.js +1519 -0
- package/packages/ui/dist/assets/ethereum-RGGVA4PY-SWGOlkuk.js +1 -0
- package/packages/ui/dist/assets/etherscan-CKUrqWYN.js +6 -0
- package/packages/ui/dist/assets/events-CiKP71cK.js +1 -0
- package/packages/ui/dist/assets/exclamation-triangle-DA1QzFiO.js +4 -0
- package/packages/ui/dist/assets/extension-BVJkmvpJ.js +8 -0
- package/packages/ui/dist/assets/external-link-D_bsR7B2.js +8 -0
- package/packages/ui/dist/assets/facebook-CmFmhojx.js +26 -0
- package/packages/ui/dist/assets/fallback-Ofl6uSnB.js +1 -0
- package/packages/ui/dist/assets/farcaster-Co-M3Ss8.js +12 -0
- package/packages/ui/dist/assets/filters-B1WwNaFU.js +8 -0
- package/packages/ui/dist/assets/flow-5FQJFCTK-CUie2reO.js +1 -0
- package/packages/ui/dist/assets/fr_FR-VBJP3ZLL-B-_ocunw.js +1519 -0
- package/packages/ui/dist/assets/github-CP4fP6gn.js +18 -0
- package/packages/ui/dist/assets/gnosis-37ZC4RBL-B137OtHZ.js +1 -0
- package/packages/ui/dist/assets/google-CsOIXJ6V.js +18 -0
- package/packages/ui/dist/assets/gravity-J5YQHTYH-Bj6B0uod.js +1 -0
- package/packages/ui/dist/assets/hardhat-TX56IT5N-CV1FY-wE.js +1 -0
- package/packages/ui/dist/assets/help-circle-DiMkomdF.js +12 -0
- package/packages/ui/dist/assets/hi_IN-WBVD5XYI-D73g2UFs.js +1519 -0
- package/packages/ui/dist/assets/hyperevm-VKPAA4SA-CHwraEsx.js +1 -0
- package/packages/ui/dist/assets/id-lmscL5LX.js +12 -0
- package/packages/ui/dist/assets/id_ID-SBYANJ7G-Cjpa4ay6.js +1519 -0
- package/packages/ui/dist/assets/image-B-ubJrY5.js +4 -0
- package/packages/ui/dist/assets/index-BaukYv-x.js +16 -0
- package/packages/ui/dist/assets/index-CF0KMmke.js +395 -0
- package/packages/ui/dist/assets/index-CKxgNxS9.css +1 -0
- package/packages/ui/dist/assets/index-CZR1Qjhs.js +1 -0
- package/packages/ui/dist/assets/index-DVgfCzCo.js +1 -0
- package/packages/ui/dist/assets/index-Dbh5V1Z0.js +1 -0
- package/packages/ui/dist/assets/index-Q2Yai4Fe.js +2103 -0
- package/packages/ui/dist/assets/index.es-C78cE5SI.js +26 -0
- package/packages/ui/dist/assets/info-Cqg57EVo.js +3 -0
- package/packages/ui/dist/assets/info-circle-DkeSWNKV.js +12 -0
- package/packages/ui/dist/assets/ink-FZMYZWHG-62p-5IK5.js +1 -0
- package/packages/ui/dist/assets/ja_JP-ZRMWJV3I-DXbifiMm.js +1519 -0
- package/packages/ui/dist/assets/kaia-65D2U3PU-JmuLQ4gC.js +1 -0
- package/packages/ui/dist/assets/ko_KR-FR54RFUG-upinSHjQ.js +1519 -0
- package/packages/ui/dist/assets/lightbulb-DNlO4qKh.js +3 -0
- package/packages/ui/dist/assets/linea-QRMVQ5DY-DuI3vv0d.js +1 -0
- package/packages/ui/dist/assets/login-UP3DZBGS-Db_wM5oQ.js +1 -0
- package/packages/ui/dist/assets/mail-kVQ8Jb9Y.js +8 -0
- package/packages/ui/dist/assets/manta-SI27YFEJ-CpVOKa06.js +1 -0
- package/packages/ui/dist/assets/mantle-CKIUT334-DR2WgqzU.js +1 -0
- package/packages/ui/dist/assets/metaMaskWallet-EI6MED72-D5HFOsnz.js +1 -0
- package/packages/ui/dist/assets/metamask-sdk-CBalSvz7.js +542 -0
- package/packages/ui/dist/assets/mobile-BEteuhF7.js +9 -0
- package/packages/ui/dist/assets/monad-4KWC6TSS-DVXSkpiz.js +1 -0
- package/packages/ui/dist/assets/more-DBWmXQli.js +11 -0
- package/packages/ui/dist/assets/ms_MY-EZSGYYYQ-4cPLK-3L.js +1519 -0
- package/packages/ui/dist/assets/native-CJ5et6AR.js +1 -0
- package/packages/ui/dist/assets/network-placeholder-Dg1uUHiL.js +14 -0
- package/packages/ui/dist/assets/nftPlaceholder-i3AHSiD9.js +8 -0
- package/packages/ui/dist/assets/off-BtMm0fi2.js +8 -0
- package/packages/ui/dist/assets/optimism-HAF2GUT7-ec6Nqxs9.js +1 -0
- package/packages/ui/dist/assets/parseSignature-Cb5FlWWg.js +1 -0
- package/packages/ui/dist/assets/play-store-iKKkXa6a.js +32 -0
- package/packages/ui/dist/assets/plus-CA5NaRtb.js +13 -0
- package/packages/ui/dist/assets/polygon-WW6ZI7PM-DXlmm4L1.js +1 -0
- package/packages/ui/dist/assets/pt_BR-JQFQ3P4L-DOHfdcA2.js +1519 -0
- package/packages/ui/dist/assets/qr-code-D2kiqR7h.js +6 -0
- package/packages/ui/dist/assets/rainbowWallet-O26YNBMX-DUhYus-9.js +1 -0
- package/packages/ui/dist/assets/recycle-horizontal-Dcme7R03.js +9 -0
- package/packages/ui/dist/assets/refresh-Dega3sDp.js +8 -0
- package/packages/ui/dist/assets/refresh-S4T5V5GX-CwqIaaxK.js +1 -0
- package/packages/ui/dist/assets/reown-logo-xNkksyWJ.js +12 -0
- package/packages/ui/dist/assets/ronin-EMCPYXZT-N-QBHZdV.js +1 -0
- package/packages/ui/dist/assets/ru_RU-Z42UEJBP-Cvb2oWxQ.js +1519 -0
- package/packages/ui/dist/assets/safeWallet-5MNKTR5Z-D-5imDLD.js +1 -0
- package/packages/ui/dist/assets/sanko-RHQYXGM5-OX010CbN.js +1 -0
- package/packages/ui/dist/assets/scan-4UYSQ56Q-CjMz6-XC.js +1 -0
- package/packages/ui/dist/assets/scroll-5OBGQVOV-DJFECiai.js +1 -0
- package/packages/ui/dist/assets/search-HYl7NO8x.js +8 -0
- package/packages/ui/dist/assets/secp256k1-Cxd6_SiH.js +1 -0
- package/packages/ui/dist/assets/send-CJU8CUAo.js +15 -0
- package/packages/ui/dist/assets/sign-A7IJEUT5-CGsRnPrd.js +1 -0
- package/packages/ui/dist/assets/superposition-HG6MMR2Y-bRkgatRO.js +1 -0
- package/packages/ui/dist/assets/swapHorizontal-IMUKiUre.js +8 -0
- package/packages/ui/dist/assets/swapHorizontalBold-CNYnNJ9-.js +8 -0
- package/packages/ui/dist/assets/swapHorizontalMedium-B9VxEYsT.js +16 -0
- package/packages/ui/dist/assets/swapHorizontalRoundedBold-Dz33l_Jh.js +8 -0
- package/packages/ui/dist/assets/swapVertical-CHUmjVJ0.js +8 -0
- package/packages/ui/dist/assets/telegram-kl9S2mbU.js +16 -0
- package/packages/ui/dist/assets/th_TH-4YB4VSB2-BUipNP-V.js +1519 -0
- package/packages/ui/dist/assets/three-dots-U5lhA1Am.js +5 -0
- package/packages/ui/dist/assets/tr_TR-5FKHPPIO-D5jTpIm9.js +1519 -0
- package/packages/ui/dist/assets/twitch-KTEUWXEp.js +18 -0
- package/packages/ui/dist/assets/twitterIcon-BHiq8mRg.js +6 -0
- package/packages/ui/dist/assets/uk_UA-ZD4IBC52-DgnQrpzl.js +1519 -0
- package/packages/ui/dist/assets/unichain-C5BWO2ZY-BfguYsnu.js +1 -0
- package/packages/ui/dist/assets/verify-CfN-BXNd.js +8 -0
- package/packages/ui/dist/assets/verify-filled-DwZccetj.js +8 -0
- package/packages/ui/dist/assets/vi_VN-5EVRZKLY-x078672g.js +1519 -0
- package/packages/ui/dist/assets/w3m-modal-CS-PFqPE.js +642 -0
- package/packages/ui/dist/assets/wallet-DVlGkhOY.js +8 -0
- package/packages/ui/dist/assets/wallet-placeholder-CvR_iEWX.js +14 -0
- package/packages/ui/dist/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js +1 -0
- package/packages/ui/dist/assets/walletconnect-8pZBDvVI.js +30 -0
- package/packages/ui/dist/assets/warning-circle-ylLEE0Yp.js +12 -0
- package/packages/ui/dist/assets/x-C_TBsTMj.js +12 -0
- package/packages/ui/dist/assets/xdc-KJ3TDBYO-DNV6zchh.js +1 -0
- package/packages/ui/dist/assets/zetachain-TLDS5IPW-Udhyw16T.js +1 -0
- package/packages/ui/dist/assets/zh_CN-4XK5YJPR-Bt6Yz5Ek.js +1519 -0
- package/packages/ui/dist/assets/zh_HK-N4YN2WSI-Cvzl1V16.js +1519 -0
- package/packages/ui/dist/assets/zh_TW-CNCRXH6Z-BNelatfN.js +1519 -0
- package/packages/ui/dist/assets/zksync-DH7HK5U4-Dt4usFw6.js +1 -0
- package/packages/ui/dist/assets/zora-FYL5H3IO-iB4wygST.js +1 -0
- package/packages/ui/dist/index.html +14 -0
- package/scripts/check-docs.mjs +262 -0
- package/scripts/check-init.mjs +109 -0
- package/scripts/postinstall.js +366 -0
- package/templates/custom-mandate/.sail/contracts/interfaces/IPermission.sol +18 -0
- package/templates/custom-mandate/README.md +85 -0
- package/templates/custom-mandate/foundry.toml +8 -0
- package/templates/custom-mandate/mandates/BoundedCallPermission.sol +35 -0
- package/templates/custom-mandate/mandates/README.md +16 -0
- package/templates/dca-rebalancer/.cursor/rules +25 -0
- package/templates/dca-rebalancer/.env.example +6 -0
- package/templates/dca-rebalancer/.github/workflows/agent-tick.yml +32 -0
- package/templates/dca-rebalancer/.sail/.gitkeep +0 -0
- package/templates/dca-rebalancer/.sail/README.md +13 -0
- package/templates/dca-rebalancer/.sail/config.json +10 -0
- package/templates/dca-rebalancer/AGENTS.md +246 -0
- package/templates/dca-rebalancer/AGENT_PLAYBOOK.md +110 -0
- package/templates/dca-rebalancer/CLAUDE.md +2 -0
- package/templates/dca-rebalancer/README.md +16 -0
- package/templates/dca-rebalancer/_gitignore +13 -0
- package/templates/dca-rebalancer/docs/PERMISSION_MODEL.md +93 -0
- package/templates/dca-rebalancer/package.json +17 -0
- package/templates/dca-rebalancer/src/agent.ts +253 -0
- package/templates/dca-rebalancer/src/config.ts +27 -0
- package/templates/dca-rebalancer/src/mandate.ts +67 -0
- package/templates/dca-rebalancer/tsconfig.json +8 -0
- package/templates/dca-rebalancer/ui/README.md +3 -0
- package/templates/lifi-permissions/LifiBoundedApprovePermissionCloneable.sol +84 -0
- package/templates/lifi-permissions/LifiDiamondSwapPermissionCloneable.sol +97 -0
- package/templates/lifi-permissions/README.md +53 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
import type { DispatchModel } from "./capabilities.js";
|
|
3
|
+
/** Chains with a bundled Sail Protocol deployment: Base, Base Sepolia, Arbitrum, Unichain. */
|
|
4
|
+
export type SailChainId = 8453 | 84532 | 42161 | 130;
|
|
5
|
+
/** A pre-audited mandate template available on a chain. */
|
|
6
|
+
export type KnownTemplate = {
|
|
7
|
+
kind: string;
|
|
8
|
+
address: Address;
|
|
9
|
+
chainId: SailChainId;
|
|
10
|
+
label: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
};
|
|
13
|
+
/** One `initialize()` parameter of a clone template, for wizard/tooling display. */
|
|
14
|
+
export type CloneTemplateParam = {
|
|
15
|
+
name: string;
|
|
16
|
+
/** Solidity ABI type, e.g. "address[]", "uint256[]", "bytes4[]". */
|
|
17
|
+
type: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Rich, self-describing metadata for an EIP-1167 clone permission template — the
|
|
22
|
+
* wizard-/tooling-facing companion to the bare `standaloneTemplates` address map.
|
|
23
|
+
* `address` mirrors `standaloneTemplates[key]` (the clone LOGIC). A clone is created
|
|
24
|
+
* per account via `PermissionFactory.deployAndAttach(account, address, salt,
|
|
25
|
+
* initData)`, where `initData` ABI-encodes a call to `initialize(initParams…)`.
|
|
26
|
+
*/
|
|
27
|
+
export type CloneTemplateInfo = {
|
|
28
|
+
/** Matching key in `standaloneTemplates`. */
|
|
29
|
+
key: string;
|
|
30
|
+
/** Clone LOGIC address (mirrors `standaloneTemplates[key]`). */
|
|
31
|
+
address: Address;
|
|
32
|
+
/** IPermission.discriminator() contract name. */
|
|
33
|
+
kind: string;
|
|
34
|
+
label: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
/** ABI of the clone's `initialize(...)`, in order — what a wizard collects. */
|
|
37
|
+
initParams: CloneTemplateParam[];
|
|
38
|
+
/** Path (within this repo) to the canonical reference source. */
|
|
39
|
+
sourceRef?: string;
|
|
40
|
+
};
|
|
41
|
+
/** Full on-chain deployment of the Sail Protocol on a given chain. */
|
|
42
|
+
export type SailDeployment = {
|
|
43
|
+
chainId: SailChainId;
|
|
44
|
+
blockNumber: number;
|
|
45
|
+
deployer: Address;
|
|
46
|
+
governance: Address;
|
|
47
|
+
timelock: Address;
|
|
48
|
+
kernel: Address;
|
|
49
|
+
permissionFactory: Address;
|
|
50
|
+
standardFeePolicy: Address;
|
|
51
|
+
safeModuleEnabler: Address;
|
|
52
|
+
treasury: Address;
|
|
53
|
+
maxPermissionFeeWei: bigint;
|
|
54
|
+
initialBaseFee: bigint;
|
|
55
|
+
initialComplexityRate: bigint;
|
|
56
|
+
/**
|
|
57
|
+
* Dispatch model this kernel implements, as a static hint. Verified on-chain
|
|
58
|
+
* against each kernel's DISPATCH_TYPEHASH. The SDK still prefers live detection
|
|
59
|
+
* (detectKernelCapabilities) and uses this only as a fallback when the on-chain
|
|
60
|
+
* read is unavailable. All three bundled chains (Base, Base Sepolia, Arbitrum)
|
|
61
|
+
* run the "selective" model, verified on-chain against each kernel's DISPATCH_TYPEHASH.
|
|
62
|
+
*/
|
|
63
|
+
dispatchModel?: DispatchModel;
|
|
64
|
+
/** Pre-audited shared mandate templates available on this chain. */
|
|
65
|
+
knownTemplates?: KnownTemplate[];
|
|
66
|
+
/**
|
|
67
|
+
* Standalone (EIP-1167 clone) permission template LOGIC addresses, keyed by a
|
|
68
|
+
* short name. These are the `impl` argument to PermissionFactory.deployAndAttach.
|
|
69
|
+
*/
|
|
70
|
+
standaloneTemplates?: Record<string, Address>;
|
|
71
|
+
/**
|
|
72
|
+
* Self-describing metadata for selected `standaloneTemplates`, so a wizard can
|
|
73
|
+
* present and configure them (label, description, `initialize()` params) without
|
|
74
|
+
* authoring Solidity. Optional and incremental — not every standalone template
|
|
75
|
+
* has an entry here yet.
|
|
76
|
+
*/
|
|
77
|
+
cloneTemplates?: CloneTemplateInfo[];
|
|
78
|
+
};
|
|
79
|
+
export declare const sailDeployments: Record<SailChainId, SailDeployment>;
|
|
80
|
+
export declare function getSailDeployment(chainId: number): SailDeployment;
|
|
81
|
+
export declare function normalizeDeployment(input: Record<string, unknown>): SailDeployment;
|
|
82
|
+
//# sourceMappingURL=deployments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../src/deployments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,8FAA8F;AAC9F,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;AAErD,2DAA2D;AAC3D,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oEAAoE;IACpE,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACtC,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,CA4K/D,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAMjE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAiBlF"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
const zero = "0x0000000000000000000000000000000000000000";
|
|
2
|
+
export const sailDeployments = {
|
|
3
|
+
84532: {
|
|
4
|
+
// SAIL-405 redeploy (2026-06-04, gitCommit 6d872e6): adds owner-gated
|
|
5
|
+
// setManager(newManager) to rotate the SMA's delegated signer (clears the
|
|
6
|
+
// permission set + bumps the nonce epoch). Genesis allowlist bootstrap +
|
|
7
|
+
// local CREATE2 proxy prediction carried over; allowlistBootstrapped=true,
|
|
8
|
+
// createAccount verified working, zero fees, onboarding live. Supersedes
|
|
9
|
+
// 0xcC50009115DAaBCB40513e03a1a0Cc2Fdf6Be558. Only `core` was redeployed;
|
|
10
|
+
// shared/standalone permission templates are NOT yet deployed against this
|
|
11
|
+
// kernel (run the templates targets + refill the template maps before clones).
|
|
12
|
+
chainId: 84532,
|
|
13
|
+
blockNumber: 42400417,
|
|
14
|
+
deployer: "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6",
|
|
15
|
+
governance: "0xEaD44bC6999E7b00b9b2E11c1660248DC2a30993",
|
|
16
|
+
timelock: "0x97B863e392C9859336788D5Ec454527d33C95B74",
|
|
17
|
+
kernel: "0xf1D0F4C9893612627409948BAa9d82a01a373799",
|
|
18
|
+
permissionFactory: "0xdfF6a2272F667cDf78Af4681b9c88A219998db95",
|
|
19
|
+
standardFeePolicy: "0x05570F7973b46Eb9Ed4518422891EFC26BD58b97",
|
|
20
|
+
safeModuleEnabler: "0xB2C2B52d94412e3472C9fb2B52186eA12a935869",
|
|
21
|
+
treasury: "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6",
|
|
22
|
+
maxPermissionFeeWei: 1000000000000000n,
|
|
23
|
+
initialBaseFee: 0n,
|
|
24
|
+
initialComplexityRate: 0n,
|
|
25
|
+
dispatchModel: "selective", // selective: verified on-chain DISPATCH_TYPEHASH 0xbe50c5391dcf9e08d11d2c30dbee822c14ad07af2ceb503c778d265801fb0e5c
|
|
26
|
+
knownTemplates: [],
|
|
27
|
+
standaloneTemplates: {},
|
|
28
|
+
},
|
|
29
|
+
8453: {
|
|
30
|
+
// SAIL-405 redeploy (2026-06-04, gitCommit 0ed0561): adds owner-gated
|
|
31
|
+
// setManager(newManager) to rotate the SMA's delegated signer (clears the
|
|
32
|
+
// permission set + bumps the nonce epoch). Genesis allowlist bootstrap +
|
|
33
|
+
// local CREATE2 proxy prediction carried over; allowlistBootstrapped=true,
|
|
34
|
+
// zero fees, onboarding live. Supersedes 0x20eff0DbE752e22655A6dAA5A94521FA06CDdE06.
|
|
35
|
+
// Only `core` was redeployed; shared/standalone permission templates are NOT yet
|
|
36
|
+
// deployed against this kernel (run the templates targets + refill the maps first).
|
|
37
|
+
chainId: 8453,
|
|
38
|
+
blockNumber: 46898030,
|
|
39
|
+
deployer: "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6",
|
|
40
|
+
governance: "0x7E897D919872b1587577617ffFC42113679d0C50",
|
|
41
|
+
timelock: "0x8eC3Ca951E193C6E3713A70022454d7A1f083281",
|
|
42
|
+
kernel: "0x6319d3dfDDe3804ba93D65752b00c52bFb05a1ab",
|
|
43
|
+
permissionFactory: "0x7724EACd97C8601d5AC244Aadbf76ad87353Ff31",
|
|
44
|
+
standardFeePolicy: "0x65850a8D5050aeAade68289ff96c4F119a24B82e",
|
|
45
|
+
safeModuleEnabler: "0xC84EdE78f93291A1fab19F51c4c7e938AB302Edf",
|
|
46
|
+
treasury: "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6",
|
|
47
|
+
maxPermissionFeeWei: 1000000000000000n,
|
|
48
|
+
initialBaseFee: 0n,
|
|
49
|
+
initialComplexityRate: 0n,
|
|
50
|
+
dispatchModel: "selective", // selective: verified on-chain DISPATCH_TYPEHASH 0xbe50c5391dcf9e08d11d2c30dbee822c14ad07af2ceb503c778d265801fb0e5c
|
|
51
|
+
knownTemplates: [],
|
|
52
|
+
standaloneTemplates: {},
|
|
53
|
+
},
|
|
54
|
+
42161: {
|
|
55
|
+
// SAIL-405 redeploy (2026-06-04, gitCommit 0ed0561): adds owner-gated
|
|
56
|
+
// setManager(newManager) to rotate the SMA's delegated signer (clears the
|
|
57
|
+
// permission set + bumps the nonce epoch). Genesis allowlist bootstrap +
|
|
58
|
+
// local CREATE2 proxy prediction carried over; allowlistBootstrapped=true,
|
|
59
|
+
// zero fees, onboarding live. Supersedes 0x9AF32E0C395fb31f5cA28994351F8fAE3003e125.
|
|
60
|
+
// Bootstrap was sent as a standalone tx post-core-deploy; identical end state to Base.
|
|
61
|
+
// Only `core` was redeployed; shared/standalone permission templates are NOT yet
|
|
62
|
+
// deployed against this kernel (run the templates targets + refill the maps first).
|
|
63
|
+
chainId: 42161,
|
|
64
|
+
blockNumber: 25244824,
|
|
65
|
+
deployer: "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6",
|
|
66
|
+
governance: "0xd6AbB7A1036ADc7958Abffec9Da03450c5a2Ec8e",
|
|
67
|
+
timelock: "0x114CB7110C780f7E3a6093AfE0B52463a569857C",
|
|
68
|
+
kernel: "0x2716B12832DED0EF5688519c5Fe069EFc0374E02",
|
|
69
|
+
permissionFactory: "0x23681A8A4C9819D8EaB37E46B858da6F3c85E683",
|
|
70
|
+
standardFeePolicy: "0xAdfB986D48480bC67a7cF3751d30599161632e0D",
|
|
71
|
+
safeModuleEnabler: "0xabe2a6D03F592BC602cA1dBDCD885ba2493274f9",
|
|
72
|
+
treasury: "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6",
|
|
73
|
+
maxPermissionFeeWei: 1000000000000000n,
|
|
74
|
+
initialBaseFee: 0n,
|
|
75
|
+
initialComplexityRate: 0n,
|
|
76
|
+
dispatchModel: "selective", // selective: verified on-chain DISPATCH_TYPEHASH 0xbe50c5391dcf9e08d11d2c30dbee822c14ad07af2ceb503c778d265801fb0e5c
|
|
77
|
+
knownTemplates: [],
|
|
78
|
+
standaloneTemplates: {},
|
|
79
|
+
},
|
|
80
|
+
130: {
|
|
81
|
+
// SAIL-406 deploy (2026-06-05, gitCommit 2c9e325): full protocol deploy on
|
|
82
|
+
// Unichain mainnet — core + the complete template suite (7 shared + 12
|
|
83
|
+
// standalone), all source-verified on uniscan.xyz. Genesis allowlist
|
|
84
|
+
// bootstrap (allowlistBootstrapped=true: Safe v1.4.1 factory, both
|
|
85
|
+
// singletons, SafeModuleEnabler, StandardFeePolicy, SafeProxy codehash
|
|
86
|
+
// 0xd7d408eb…fb4c), zero fees, onboarding live without the 48h timelock.
|
|
87
|
+
// First chain to ship permission templates against the kernel.
|
|
88
|
+
chainId: 130,
|
|
89
|
+
blockNumber: 49897206,
|
|
90
|
+
deployer: "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6",
|
|
91
|
+
governance: "0xAb5C90ECfF2763f6f20f8E553E3b8778dD9C349A",
|
|
92
|
+
timelock: "0xd44FbBB37f01e235E0EE5386948F216d36D0CEf2",
|
|
93
|
+
kernel: "0xD985029960a9B7C2E7E38e102C448b8b8539B156",
|
|
94
|
+
permissionFactory: "0x8edDb62Aa49CeB837abf2653be2d93Ad9Fe6777D",
|
|
95
|
+
standardFeePolicy: "0x7bBA8BE3c01c972757aA4a230A00D58aB600A1F1",
|
|
96
|
+
safeModuleEnabler: "0xFE9227A9F2baf704060c604466df354a5A137b9B",
|
|
97
|
+
treasury: "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6",
|
|
98
|
+
maxPermissionFeeWei: 1000000000000000n,
|
|
99
|
+
initialBaseFee: 0n,
|
|
100
|
+
initialComplexityRate: 0n,
|
|
101
|
+
dispatchModel: "selective", // selective: verified on-chain DISPATCH_TYPEHASH 0xbe50c5391dcf9e08d11d2c30dbee822c14ad07af2ceb503c778d265801fb0e5c
|
|
102
|
+
knownTemplates: [
|
|
103
|
+
{
|
|
104
|
+
address: "0xbD624eC67e2685872A60c0aF8F020727e20D096e",
|
|
105
|
+
kind: "SharedAMMLiquidityPermission",
|
|
106
|
+
chainId: 130,
|
|
107
|
+
label: "Shared AMM Liquidity",
|
|
108
|
+
description: "Bounded AMM liquidity provision/removal — enforces allowed pools and bounds.",
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
address: "0x9d386605518FA81ff536b351ff055d26203229A9",
|
|
112
|
+
kind: "SharedApproveAndCallBatchPermission",
|
|
113
|
+
chainId: 130,
|
|
114
|
+
label: "Shared Approve-and-Call Batch",
|
|
115
|
+
description: "Bounded approve-then-call batch — enforces token, spender, and selector allowlists.",
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
address: "0x948a9F9a6f2828E50f7e71bd569ba75A69da2BEb",
|
|
119
|
+
kind: "SharedBoundedBorrowPermission",
|
|
120
|
+
chainId: 130,
|
|
121
|
+
label: "Shared Bounded Borrow",
|
|
122
|
+
description: "Bounded borrow — enforces allowed markets and max borrow size.",
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
address: "0xfD19fad56Ca3d6FaCd4279a2F84f09bef8967f6a",
|
|
126
|
+
kind: "SharedBoundedSwapPermission",
|
|
127
|
+
chainId: 130,
|
|
128
|
+
label: "Shared Uniswap V3 Swap",
|
|
129
|
+
description: "Bounded swap via Uniswap V3 — enforces allowed tokens, max trade size, and slippage.",
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
address: "0x900cd03ee15e629bC4e94F6344d5529F4862071c",
|
|
133
|
+
kind: "SharedDeFiBundlePermission",
|
|
134
|
+
chainId: 130,
|
|
135
|
+
label: "Shared DeFi Bundle",
|
|
136
|
+
description: "Bounded multi-step DeFi bundle within a single permission.",
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
address: "0x1dF90a2484bCF3c6Da2FB035aa0C9f523e77Cd62",
|
|
140
|
+
kind: "SharedPendlePermission",
|
|
141
|
+
chainId: 130,
|
|
142
|
+
label: "Shared Pendle",
|
|
143
|
+
description: "Bounded Pendle interactions — enforces allowed markets and bounds.",
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
address: "0x851Ad196b7DC6c05eaf0B9420f2a72dc336D7739",
|
|
147
|
+
kind: "SharedTransferTargetPermission",
|
|
148
|
+
chainId: 130,
|
|
149
|
+
label: "Shared Transfer Target",
|
|
150
|
+
description: "Allows transfers only to a pre-approved target address.",
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
standaloneTemplates: {
|
|
154
|
+
// EIP-1167 clone LOGIC addresses — the `impl` argument to
|
|
155
|
+
// PermissionFactory.deployAndAttach(account, impl, salt, initData). A clone
|
|
156
|
+
// is created and configured per account via its initialize(...).
|
|
157
|
+
azuroPrediction: "0xd48cdBB25bF0A214dEffECac3c9431650834b046",
|
|
158
|
+
boundedApprove: "0xbF7089A905081054c9dA628707f2e1EF70A7F300",
|
|
159
|
+
boundedBorrow: "0x17D466309C7E0237960f68126Cc4A109D194ac28",
|
|
160
|
+
boundedDeposit: "0xf49E304EDf806AF46E8f17740e56C1CBFad5d264",
|
|
161
|
+
boundedLiFi: "0x6a0171013FeD6B2Eda16A4dd4DB33Fa34b7F3e3f",
|
|
162
|
+
boundedSwap: "0x06696F9dd4bD0994f55b075600627Dc6E54635c9",
|
|
163
|
+
boundedWithdraw: "0xE207CfC8c2204b15ee5fD22B79472929706c7E4b",
|
|
164
|
+
gmxPerp: "0xB1bb967aC11D61C0599c8458D9B950461db5D4E9",
|
|
165
|
+
gainsNetworkPerp: "0x1297673f71A9be02bc876Dbd0ceaB3c96D268bE3",
|
|
166
|
+
limitlessPrediction: "0x2bE4280d8816626e1dea4E94A83d9334A971AF90",
|
|
167
|
+
synthetixPerp: "0x711a70B16D013a9B96Bd6733F4b3097e5787f860",
|
|
168
|
+
transferTarget: "0x8428155b6b9eea4E78b9a52c2312752eD04Baf16",
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
export function getSailDeployment(chainId) {
|
|
173
|
+
const deployment = sailDeployments[chainId];
|
|
174
|
+
if (!deployment) {
|
|
175
|
+
throw new Error(`No Sail deployment is bundled for chain ${chainId}`);
|
|
176
|
+
}
|
|
177
|
+
return deployment;
|
|
178
|
+
}
|
|
179
|
+
export function normalizeDeployment(input) {
|
|
180
|
+
return {
|
|
181
|
+
chainId: Number(input.chainId),
|
|
182
|
+
blockNumber: Number(input.blockNumber),
|
|
183
|
+
deployer: input.deployer ?? zero,
|
|
184
|
+
governance: input.governance,
|
|
185
|
+
timelock: input.timelock,
|
|
186
|
+
kernel: input.kernel,
|
|
187
|
+
permissionFactory: input.permissionFactory,
|
|
188
|
+
standardFeePolicy: input.standardFeePolicy,
|
|
189
|
+
safeModuleEnabler: input.safeModuleEnabler,
|
|
190
|
+
treasury: input.treasury,
|
|
191
|
+
maxPermissionFeeWei: BigInt(input.maxPermissionFeeWei),
|
|
192
|
+
initialBaseFee: BigInt(input.initialBaseFee),
|
|
193
|
+
initialComplexityRate: BigInt(input.initialComplexityRate),
|
|
194
|
+
dispatchModel: input.dispatchModel,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=deployments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments.js","sourceRoot":"","sources":["../src/deployments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* Discover all Safe (SMA) addresses owned by a given EOA or contract on a
|
|
4
|
+
* specific chain, via the official Gnosis Safe Transaction Service. This is the
|
|
5
|
+
* recommended way to find all SMAs associated with a connected owner wallet.
|
|
6
|
+
*/
|
|
7
|
+
export declare function discoverSafesForOwner(owner: Address, chainId: number): Promise<Address[]>;
|
|
8
|
+
/** Returns the base URL for the Safe Transaction Service on a chain (if known). */
|
|
9
|
+
export declare function getSafeTransactionServiceUrl(chainId: number): string | undefined;
|
|
10
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAsBpC;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAe/F;AAED,mFAAmF;AACnF,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe Transaction Service endpoints per chain. Safe consolidated the old
|
|
3
|
+
* per-chain hosts into one unified API at api.safe.global/tx-service/<slug>.
|
|
4
|
+
* No API key is required for these reads.
|
|
5
|
+
*/
|
|
6
|
+
const SAFE_TX_SERVICE_SLUGS = {
|
|
7
|
+
1: "eth",
|
|
8
|
+
100: "gno",
|
|
9
|
+
137: "pol",
|
|
10
|
+
42161: "arb1",
|
|
11
|
+
8453: "base",
|
|
12
|
+
84532: "basesep",
|
|
13
|
+
130: "unichain",
|
|
14
|
+
};
|
|
15
|
+
function safeTxServiceBase(chainId) {
|
|
16
|
+
const slug = SAFE_TX_SERVICE_SLUGS[chainId];
|
|
17
|
+
return slug ? `https://api.safe.global/tx-service/${slug}` : undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Discover all Safe (SMA) addresses owned by a given EOA or contract on a
|
|
21
|
+
* specific chain, via the official Gnosis Safe Transaction Service. This is the
|
|
22
|
+
* recommended way to find all SMAs associated with a connected owner wallet.
|
|
23
|
+
*/
|
|
24
|
+
export async function discoverSafesForOwner(owner, chainId) {
|
|
25
|
+
const baseUrl = safeTxServiceBase(chainId);
|
|
26
|
+
if (!baseUrl) {
|
|
27
|
+
throw new Error(`No Safe Transaction Service configured for chain ${chainId}`);
|
|
28
|
+
}
|
|
29
|
+
const url = `${baseUrl}/api/v1/owners/${owner}/safes/`;
|
|
30
|
+
const res = await fetch(url, { headers: { Accept: "application/json" } });
|
|
31
|
+
if (!res.ok) {
|
|
32
|
+
throw new Error(`Failed to fetch Safes for owner ${owner} on chain ${chainId}: ${res.status}`);
|
|
33
|
+
}
|
|
34
|
+
const data = (await res.json());
|
|
35
|
+
return (data.safes ?? []);
|
|
36
|
+
}
|
|
37
|
+
/** Returns the base URL for the Safe Transaction Service on a chain (if known). */
|
|
38
|
+
export function getSafeTransactionServiceUrl(chainId) {
|
|
39
|
+
return safeTxServiceBase(chainId);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,qBAAqB,GAA2B;IACpD,CAAC,EAAE,KAAK;IACR,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,UAAU;CAChB,CAAC;AAEF,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,CAAC,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAc,EAAE,OAAe;IACzE,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oDAAoD,OAAO,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,OAAO,kBAAkB,KAAK,SAAS,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAE1E,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,aAAa,OAAO,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwB,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAc,CAAC;AACzC,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,4BAA4B,CAAC,OAAe;IAC1D,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { type PublicClient, type TypedDataDomain } from "viem";
|
|
2
|
+
import type { Account, Address, Chain, Hex, Transport, WalletClient } from "viem";
|
|
3
|
+
import type { DispatchModel } from "./capabilities.js";
|
|
4
|
+
import type { SerializedTypedData } from "./signing.js";
|
|
5
|
+
import type { ILocalKeyring } from "./types.js";
|
|
6
|
+
/** EIP-712 domain for the SailKernel on a given chain. */
|
|
7
|
+
export declare function sailKernelDomain(args: {
|
|
8
|
+
chainId: number;
|
|
9
|
+
kernel: Address;
|
|
10
|
+
}): TypedDataDomain;
|
|
11
|
+
/**
|
|
12
|
+
* EIP-712 Dispatch struct field lists, keyed by dispatch model.
|
|
13
|
+
*
|
|
14
|
+
* This is the canonical definition used by BOTH `buildDispatchSignature` (the
|
|
15
|
+
* public helper) and `SailorClient.dispatch.single()` (the internal path) — a
|
|
16
|
+
* single source of truth that makes it impossible for the two paths to diverge.
|
|
17
|
+
* Selective kernels include the `permission` field; conjunctive kernels do not.
|
|
18
|
+
*/
|
|
19
|
+
export declare const DISPATCH_EIP712_FIELDS: {
|
|
20
|
+
readonly selective: readonly [{
|
|
21
|
+
readonly name: "account";
|
|
22
|
+
readonly type: "address";
|
|
23
|
+
}, {
|
|
24
|
+
readonly name: "permission";
|
|
25
|
+
readonly type: "address";
|
|
26
|
+
}, {
|
|
27
|
+
readonly name: "target";
|
|
28
|
+
readonly type: "address";
|
|
29
|
+
}, {
|
|
30
|
+
readonly name: "value";
|
|
31
|
+
readonly type: "uint256";
|
|
32
|
+
}, {
|
|
33
|
+
readonly name: "dataHash";
|
|
34
|
+
readonly type: "bytes32";
|
|
35
|
+
}, {
|
|
36
|
+
readonly name: "nonce";
|
|
37
|
+
readonly type: "uint256";
|
|
38
|
+
}, {
|
|
39
|
+
readonly name: "deadline";
|
|
40
|
+
readonly type: "uint256";
|
|
41
|
+
}];
|
|
42
|
+
readonly conjunctive: readonly [{
|
|
43
|
+
readonly name: "account";
|
|
44
|
+
readonly type: "address";
|
|
45
|
+
}, {
|
|
46
|
+
readonly name: "target";
|
|
47
|
+
readonly type: "address";
|
|
48
|
+
}, {
|
|
49
|
+
readonly name: "value";
|
|
50
|
+
readonly type: "uint256";
|
|
51
|
+
}, {
|
|
52
|
+
readonly name: "dataHash";
|
|
53
|
+
readonly type: "bytes32";
|
|
54
|
+
}, {
|
|
55
|
+
readonly name: "nonce";
|
|
56
|
+
readonly type: "uint256";
|
|
57
|
+
}, {
|
|
58
|
+
readonly name: "deadline";
|
|
59
|
+
readonly type: "uint256";
|
|
60
|
+
}];
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Build a signed EIP-712 Dispatch payload for a SailKernel manager dispatch.
|
|
64
|
+
*
|
|
65
|
+
* ### Why there is no `model` / `dispatchModel` parameter
|
|
66
|
+
*
|
|
67
|
+
* The Phase 1 incident established that the single most dangerous mistake an
|
|
68
|
+
* operator can make is using the wrong dispatch model. The conjunctive struct
|
|
69
|
+
* (6 fields, no `permission`) and the selective struct (7 fields, with
|
|
70
|
+
* `permission`) produce different EIP-712 digests; signing the wrong one
|
|
71
|
+
* recovers a random address and reverts with `InvalidManagerSignature()`.
|
|
72
|
+
*
|
|
73
|
+
* This function reads the on-chain `DISPATCH_TYPEHASH` from the kernel before
|
|
74
|
+
* signing — the correct struct is selected automatically regardless of what the
|
|
75
|
+
* caller believes the model to be. Callers cannot supply a model override; if
|
|
76
|
+
* the on-chain read fails (bad RPC, wrong kernel address), the function throws
|
|
77
|
+
* a clear error rather than signing blindly against an assumed model.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* const { signature, nonce, deadline } = await buildDispatchSignature({
|
|
82
|
+
* publicClient,
|
|
83
|
+
* kernel: "0x6319d3df...",
|
|
84
|
+
* chainId: 8453,
|
|
85
|
+
* account: mySafe,
|
|
86
|
+
* permission: myPermission,
|
|
87
|
+
* call: { target: router, value: 0n, data: swapCalldata },
|
|
88
|
+
* manager: myKeyring,
|
|
89
|
+
* });
|
|
90
|
+
* // Then submit: kernel.dispatch(account, permission, target, value, data, signature, deadline)
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export declare function buildDispatchSignature(params: {
|
|
94
|
+
/** viem public client bound to the kernel's chain. */
|
|
95
|
+
publicClient: PublicClient;
|
|
96
|
+
/** Deployed SailKernel address. */
|
|
97
|
+
kernel: Address;
|
|
98
|
+
/** EVM chain id — required for the EIP-712 domain separator. */
|
|
99
|
+
chainId: number;
|
|
100
|
+
/** The Safe (SMA) account executing the dispatch. */
|
|
101
|
+
account: Address;
|
|
102
|
+
/**
|
|
103
|
+
* The registered permission that authorises this call.
|
|
104
|
+
* Required by selective kernels — the `permission` field is part of the
|
|
105
|
+
* signed struct and the kernel rejects dispatches that name an
|
|
106
|
+
* unregistered permission.
|
|
107
|
+
*/
|
|
108
|
+
permission: Address;
|
|
109
|
+
/** The call to execute: target contract, ETH value (wei), and calldata. */
|
|
110
|
+
call: {
|
|
111
|
+
target: Address;
|
|
112
|
+
value: bigint;
|
|
113
|
+
data: Hex;
|
|
114
|
+
};
|
|
115
|
+
/** Manager key (the agent's hot key) that will sign the dispatch. */
|
|
116
|
+
manager: ILocalKeyring;
|
|
117
|
+
/**
|
|
118
|
+
* Signature deadline as a Unix timestamp (seconds).
|
|
119
|
+
* Defaults to now + 600 s (10 minutes).
|
|
120
|
+
*/
|
|
121
|
+
deadline?: bigint;
|
|
122
|
+
/**
|
|
123
|
+
* Manager nonce to sign with.
|
|
124
|
+
* Defaults to the current on-chain `managerNonces[account]` value.
|
|
125
|
+
* Pass an explicit value when submitting sequential dispatches whose
|
|
126
|
+
* nonce ordering you control.
|
|
127
|
+
*/
|
|
128
|
+
nonce?: bigint;
|
|
129
|
+
}): Promise<{
|
|
130
|
+
/** Raw EIP-712 signature bytes — pass directly to `kernel.dispatch`. */
|
|
131
|
+
signature: Hex;
|
|
132
|
+
/** The nonce that was signed (on-chain value or explicit override). */
|
|
133
|
+
nonce: bigint;
|
|
134
|
+
/** The deadline that was signed (unix seconds). */
|
|
135
|
+
deadline: bigint;
|
|
136
|
+
/**
|
|
137
|
+
* The dispatch model detected from the on-chain DISPATCH_TYPEHASH.
|
|
138
|
+
* Informational — the correct struct was already selected for this signature.
|
|
139
|
+
*/
|
|
140
|
+
dispatchModel: DispatchModel;
|
|
141
|
+
}>;
|
|
142
|
+
/**
|
|
143
|
+
* EIP-712 types for RegisterPermission — selective kernel (withDeadline variant).
|
|
144
|
+
* Used when detectKernelCapabilities reports registerPermissionHasDeadline = true.
|
|
145
|
+
*/
|
|
146
|
+
export declare const REGISTER_PERMISSION_TYPES: {
|
|
147
|
+
readonly RegisterPermission: readonly [{
|
|
148
|
+
readonly name: "account";
|
|
149
|
+
readonly type: "address";
|
|
150
|
+
}, {
|
|
151
|
+
readonly name: "permission";
|
|
152
|
+
readonly type: "address";
|
|
153
|
+
}, {
|
|
154
|
+
readonly name: "nonce";
|
|
155
|
+
readonly type: "uint256";
|
|
156
|
+
}, {
|
|
157
|
+
readonly name: "deadline";
|
|
158
|
+
readonly type: "uint256";
|
|
159
|
+
}];
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* EIP-712 types for RegisterPermission — conjunctive kernel (noDeadline variant).
|
|
163
|
+
* Used when detectKernelCapabilities reports registerPermissionHasDeadline = false.
|
|
164
|
+
*/
|
|
165
|
+
export declare const REGISTER_PERMISSION_TYPES_NO_DEADLINE: {
|
|
166
|
+
readonly RegisterPermission: readonly [{
|
|
167
|
+
readonly name: "account";
|
|
168
|
+
readonly type: "address";
|
|
169
|
+
}, {
|
|
170
|
+
readonly name: "permission";
|
|
171
|
+
readonly type: "address";
|
|
172
|
+
}, {
|
|
173
|
+
readonly name: "nonce";
|
|
174
|
+
readonly type: "uint256";
|
|
175
|
+
}];
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Build a JSON-serializable RegisterPermission typed-data payload for the
|
|
179
|
+
* browser signing station. Bigints are stringified so it survives transport;
|
|
180
|
+
* the UI re-parses decimal-string fields before signing.
|
|
181
|
+
*
|
|
182
|
+
* Pass `hasDeadline` from KernelCapabilities.registerPermissionHasDeadline.
|
|
183
|
+
* All bundled kernels (Base, Base Sepolia, Arbitrum) are now selective and include
|
|
184
|
+
* the deadline field. This flag exists for older or custom kernels that predate the
|
|
185
|
+
* selective model. detectKernelCapabilities resolves this from the on-chain REGISTER_PERMISSION_TYPEHASH.
|
|
186
|
+
*/
|
|
187
|
+
export declare function buildRegisterPermissionTypedData(args: {
|
|
188
|
+
chainId: number;
|
|
189
|
+
kernel: Address;
|
|
190
|
+
account: Address;
|
|
191
|
+
permission: Address;
|
|
192
|
+
nonce: bigint;
|
|
193
|
+
/**
|
|
194
|
+
* Whether the kernel's RegisterPermission type includes a deadline field.
|
|
195
|
+
* Read from KernelCapabilities.registerPermissionHasDeadline.
|
|
196
|
+
* Defaults to false (conjunctive, no deadline) — the safer choice when unknown,
|
|
197
|
+
* since including an unexpected field causes an on-chain signature mismatch.
|
|
198
|
+
*/
|
|
199
|
+
hasDeadline?: boolean;
|
|
200
|
+
/** Signature deadline (unix seconds). Only used when hasDeadline = true. Defaults to 5 minutes from now. */
|
|
201
|
+
deadline?: bigint;
|
|
202
|
+
}): SerializedTypedData;
|
|
203
|
+
/**
|
|
204
|
+
* EIP-712 types for RegisterPermissions (batch) — selective kernel. Mirrors the
|
|
205
|
+
* shape SailorClient.mandate.attachBatch signs and the on-chain
|
|
206
|
+
* registerPermissions(account, permissions[], deadline, sig) entry point.
|
|
207
|
+
*/
|
|
208
|
+
export declare const REGISTER_PERMISSIONS_BATCH_TYPES: {
|
|
209
|
+
readonly RegisterPermissions: readonly [{
|
|
210
|
+
readonly name: "account";
|
|
211
|
+
readonly type: "address";
|
|
212
|
+
}, {
|
|
213
|
+
readonly name: "permissions";
|
|
214
|
+
readonly type: "address[]";
|
|
215
|
+
}, {
|
|
216
|
+
readonly name: "nonce";
|
|
217
|
+
readonly type: "uint256";
|
|
218
|
+
}, {
|
|
219
|
+
readonly name: "deadline";
|
|
220
|
+
readonly type: "uint256";
|
|
221
|
+
}];
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* Build a JSON-serializable RegisterPermissions (batch) typed-data payload for
|
|
225
|
+
* the browser signing station — the re-approval step after a manager rotation,
|
|
226
|
+
* which rebinds every previously-attached mandate to the new delegated signer in
|
|
227
|
+
* a single owner signature + tx. Bigints are stringified for transport.
|
|
228
|
+
*/
|
|
229
|
+
export declare function buildRegisterPermissionsBatchTypedData(args: {
|
|
230
|
+
chainId: number;
|
|
231
|
+
kernel: Address;
|
|
232
|
+
account: Address;
|
|
233
|
+
permissions: Address[];
|
|
234
|
+
nonce: bigint;
|
|
235
|
+
/** Signature deadline (unix seconds). Defaults to 10 minutes from now. */
|
|
236
|
+
deadline?: bigint;
|
|
237
|
+
}): SerializedTypedData;
|
|
238
|
+
/**
|
|
239
|
+
* Sign a RegisterPermission message directly with a wallet client. Used by
|
|
240
|
+
* headless flows (tests / scripts) where the owner's key is local rather than
|
|
241
|
+
* in a browser. The browser path uses buildRegisterPermissionTypedData instead.
|
|
242
|
+
*
|
|
243
|
+
* Pass `hasDeadline` from KernelCapabilities.registerPermissionHasDeadline.
|
|
244
|
+
*/
|
|
245
|
+
export declare function signRegisterPermission(args: {
|
|
246
|
+
walletClient: WalletClient<Transport, Chain, Account>;
|
|
247
|
+
chainId: number;
|
|
248
|
+
kernel: Address;
|
|
249
|
+
account: Address;
|
|
250
|
+
permission: Address;
|
|
251
|
+
nonce: bigint;
|
|
252
|
+
/** Whether the kernel's RegisterPermission type includes a deadline field. Defaults to false. */
|
|
253
|
+
hasDeadline?: boolean;
|
|
254
|
+
/** Signature deadline (unix seconds). Only used when hasDeadline = true. Defaults to 5 minutes from now. */
|
|
255
|
+
deadline?: bigint;
|
|
256
|
+
}): Promise<Hex>;
|
|
257
|
+
//# sourceMappingURL=eip712.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip712.d.ts","sourceRoot":"","sources":["../src/eip712.ts"],"names":[],"mappings":"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"}
|