@dev.sail.money/sailor 0.0.2 → 1.0.0-38
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 +43 -15
- package/README.md +217 -126
- package/examples/permissions/BoundedApproveAndCallBatch.sol +179 -0
- package/examples/permissions/BoundedBet_Limitless_Base.sol +8 -7
- package/examples/permissions/BoundedBorrow_AaveV3_Arbitrum.sol +13 -13
- package/examples/permissions/BoundedPerp_GMXv2_Arbitrum.sol +50 -39
- package/examples/permissions/BoundedStake_Venice_Base.sol +85 -0
- package/examples/permissions/BoundedSupply_AaveV3_Arbitrum.sol +82 -0
- package/examples/permissions/BoundedSwap_UniswapV3_Base.sol +15 -12
- package/examples/permissions/BoundedSwap_UniswapV4_Unichain.sol +14 -8
- package/examples/permissions/BoundedTransfer_ERC20_Ethereum.sol +6 -6
- package/examples/permissions/BoundedVault_ERC4626_Base.sol +97 -0
- package/examples/permissions/README.md +29 -2
- package/examples/permissions/SailCalldata.sol +118 -0
- package/examples/permissions/interfaces/IBatchPermission.sol +38 -0
- package/package.json +17 -12
- package/packages/cli/dist/index.cjs +4164 -2508
- package/packages/cli/dist/server.cjs +897 -1566
- package/packages/sdk/dist/chains.d.ts +12 -0
- package/packages/sdk/dist/chains.d.ts.map +1 -0
- package/packages/sdk/dist/chains.js +94 -0
- package/packages/sdk/dist/chains.js.map +1 -0
- package/packages/sdk/dist/deployments.d.ts +14 -7
- package/packages/sdk/dist/deployments.d.ts.map +1 -1
- package/packages/sdk/dist/deployments.js +132 -141
- package/packages/sdk/dist/deployments.js.map +1 -1
- package/packages/sdk/dist/index.d.ts +3 -2
- package/packages/sdk/dist/index.d.ts.map +1 -1
- package/packages/sdk/dist/index.js +3 -2
- package/packages/sdk/dist/index.js.map +1 -1
- package/packages/sdk/dist/intelligence.d.ts +1 -1
- package/packages/sdk/dist/intelligence.js +1 -1
- package/packages/sdk/dist/lifi.d.ts +17 -0
- package/packages/sdk/dist/lifi.d.ts.map +1 -1
- package/packages/sdk/dist/lifi.js +24 -0
- package/packages/sdk/dist/lifi.js.map +1 -1
- package/packages/sdk/dist/safe.d.ts +83 -0
- package/packages/sdk/dist/safe.d.ts.map +1 -1
- package/packages/sdk/dist/safe.js +92 -1
- package/packages/sdk/dist/safe.js.map +1 -1
- package/packages/sdk/dist/templates/ammLiquidity.d.ts +24 -11
- package/packages/sdk/dist/templates/ammLiquidity.d.ts.map +1 -1
- package/packages/sdk/dist/templates/ammLiquidity.js +39 -31
- package/packages/sdk/dist/templates/ammLiquidity.js.map +1 -1
- package/packages/sdk/dist/templates/approveAndCallBatch.d.ts +24 -10
- package/packages/sdk/dist/templates/approveAndCallBatch.d.ts.map +1 -1
- package/packages/sdk/dist/templates/approveAndCallBatch.js +36 -23
- package/packages/sdk/dist/templates/approveAndCallBatch.js.map +1 -1
- package/packages/sdk/dist/templates/boundedBorrow.d.ts +19 -9
- package/packages/sdk/dist/templates/boundedBorrow.d.ts.map +1 -1
- package/packages/sdk/dist/templates/boundedBorrow.js +28 -19
- package/packages/sdk/dist/templates/boundedBorrow.js.map +1 -1
- package/packages/sdk/dist/templates/boundedSwap.d.ts +19 -9
- package/packages/sdk/dist/templates/boundedSwap.d.ts.map +1 -1
- package/packages/sdk/dist/templates/boundedSwap.js +30 -20
- package/packages/sdk/dist/templates/boundedSwap.js.map +1 -1
- package/packages/sdk/dist/templates/defiBundle.d.ts +35 -9
- package/packages/sdk/dist/templates/defiBundle.d.ts.map +1 -1
- package/packages/sdk/dist/templates/defiBundle.js +84 -22
- package/packages/sdk/dist/templates/defiBundle.js.map +1 -1
- package/packages/sdk/dist/templates/pendle.d.ts +23 -8
- package/packages/sdk/dist/templates/pendle.d.ts.map +1 -1
- package/packages/sdk/dist/templates/pendle.js +34 -14
- package/packages/sdk/dist/templates/pendle.js.map +1 -1
- package/packages/sdk/dist/templates/transferTarget.d.ts +11 -3
- package/packages/sdk/dist/templates/transferTarget.d.ts.map +1 -1
- package/packages/sdk/dist/templates/transferTarget.js +14 -7
- package/packages/sdk/dist/templates/transferTarget.js.map +1 -1
- package/packages/sdk/dist/types.d.ts +19 -1
- package/packages/sdk/dist/types.d.ts.map +1 -1
- package/packages/sdk/package.json +28 -0
- package/packages/ui/dist/assets/{add-DaJhwIBV.js → add-Dl1etsL9.js} +1 -1
- package/packages/ui/dist/assets/{all-wallets-BUxsqWXi.js → all-wallets-C0eHLOGG.js} +1 -1
- package/packages/ui/dist/assets/{app-store-DkltwTqE.js → app-store-B-VMDEZ3.js} +1 -1
- package/packages/ui/dist/assets/{apple-owVOeaIT.js → apple-DkDXzKns.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-D2mmNJve.js → arrow-bottom-DtPzuS76.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-circle-CbNYijx-.js → arrow-bottom-circle-D7odSAO8.js} +1 -1
- package/packages/ui/dist/assets/{arrow-left-DJB61s4C.js → arrow-left-zJV9tpx0.js} +1 -1
- package/packages/ui/dist/assets/{arrow-right-BBrsQ9R4.js → arrow-right-BOREfe7o.js} +1 -1
- package/packages/ui/dist/assets/{arrow-top-Cil6bOc8.js → arrow-top-CipQc3Af.js} +1 -1
- package/packages/ui/dist/assets/{bank-CbwEmRo3.js → bank-C5s7eoV5.js} +1 -1
- package/packages/ui/dist/assets/{basic-CLNfjw3m.js → basic-D2es4Vq8.js} +1 -1
- package/packages/ui/dist/assets/{browser-B5TtF4Pb.js → browser-DITQWDC9.js} +1 -1
- package/packages/ui/dist/assets/{card-CO7BVB-C.js → card-C3DDkaYK.js} +1 -1
- package/packages/ui/dist/assets/{ccip-2W7K3_J3.js → ccip-UBXL3JiN.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-bold-D9xGHzPE.js → checkmark-bold-D8yW0_K_.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-BEtSHq9m.js → checkmark-ngef3MAl.js} +1 -1
- package/packages/ui/dist/assets/{chevron-bottom-BDztht6i.js → chevron-bottom-C56BipDR.js} +1 -1
- package/packages/ui/dist/assets/{chevron-left-EV4GFNbc.js → chevron-left-BmIPtPl_.js} +1 -1
- package/packages/ui/dist/assets/{chevron-right-B4_bB9oR.js → chevron-right-BnySHQ8h.js} +1 -1
- package/packages/ui/dist/assets/{chevron-top-D54xPNzF.js → chevron-top-BDGZnNW3.js} +1 -1
- package/packages/ui/dist/assets/{chrome-store-DYUpAJJq.js → chrome-store-BYIqJZVF.js} +1 -1
- package/packages/ui/dist/assets/{clock-Ca1T1Soz.js → clock-Bl4mUHAM.js} +1 -1
- package/packages/ui/dist/assets/{close-BZqWjurK.js → close-B9rhEX6U.js} +1 -1
- package/packages/ui/dist/assets/{coinPlaceholder-e6fl2XDo.js → coinPlaceholder-1cO0FQsl.js} +1 -1
- package/packages/ui/dist/assets/{compass-DCLC7zIh.js → compass-7i-VuXu2.js} +1 -1
- package/packages/ui/dist/assets/{copy-Th2AaD-O.js → copy-OqqXix2J.js} +1 -1
- package/packages/ui/dist/assets/{core-Ckx_cyuH.js → core-tX9kIIDJ.js} +3 -3
- package/packages/ui/dist/assets/cursor-BoyeQ9fN.js +3 -0
- package/packages/ui/dist/assets/{cursor-transparent-BKHeABKB.js → cursor-transparent-5aoRH67u.js} +1 -1
- package/packages/ui/dist/assets/{desktop-CBjY8t6F.js → desktop-BaPXK9R6.js} +1 -1
- package/packages/ui/dist/assets/{disconnect-DbSs2cli.js → disconnect-LlK5K1CF.js} +1 -1
- package/packages/ui/dist/assets/{discord-ZlLOAUkM.js → discord-BdcQNWY_.js} +1 -1
- package/packages/ui/dist/assets/{etherscan-CKUrqWYN.js → etherscan-Bb-WxpO1.js} +1 -1
- package/packages/ui/dist/assets/{events-CiKP71cK.js → events-DjdZr6no.js} +1 -1
- package/packages/ui/dist/assets/{exclamation-triangle-DA1QzFiO.js → exclamation-triangle-COx4VtPV.js} +1 -1
- package/packages/ui/dist/assets/{extension-BVJkmvpJ.js → extension-DF63DTWO.js} +1 -1
- package/packages/ui/dist/assets/{external-link-D_bsR7B2.js → external-link-DyghCkQu.js} +1 -1
- package/packages/ui/dist/assets/{facebook-CmFmhojx.js → facebook-Dcg4bZMR.js} +1 -1
- package/packages/ui/dist/assets/{fallback-Ofl6uSnB.js → fallback-DJIr_fH3.js} +1 -1
- package/packages/ui/dist/assets/{farcaster-Co-M3Ss8.js → farcaster-BkmV5HjO.js} +1 -1
- package/packages/ui/dist/assets/{filters-B1WwNaFU.js → filters-DLHj1T_P.js} +1 -1
- package/packages/ui/dist/assets/{github-CP4fP6gn.js → github-BFDCgKrF.js} +1 -1
- package/packages/ui/dist/assets/{google-CsOIXJ6V.js → google-C08SpmIy.js} +1 -1
- package/packages/ui/dist/assets/{help-circle-DiMkomdF.js → help-circle-DU1IFmWp.js} +1 -1
- package/packages/ui/dist/assets/{id-lmscL5LX.js → id-DtDRGf3L.js} +1 -1
- package/packages/ui/dist/assets/{image-B-ubJrY5.js → image-CgCXJEjT.js} +1 -1
- package/packages/ui/dist/assets/{index-Dbh5V1Z0.js → index-8chM4S5Y.js} +1 -1
- package/packages/ui/dist/assets/{index-BaukYv-x.js → index-B5sCtNuq.js} +1 -1
- package/packages/ui/dist/assets/{index-CF0KMmke.js → index-BBfBEazf.js} +3 -3
- package/packages/ui/dist/assets/{index-CZR1Qjhs.js → index-BhXPwltt.js} +1 -1
- package/packages/ui/dist/assets/index-Cm05Py20.css +1 -0
- package/packages/ui/dist/assets/{index-DVgfCzCo.js → index-D37bD6Yt.js} +1 -1
- package/packages/ui/dist/assets/index-DZfBh-cg.js +1775 -0
- package/packages/ui/dist/assets/{index.es-C78cE5SI.js → index.es-BEcNQEn-.js} +4 -4
- package/packages/ui/dist/assets/{info-Cqg57EVo.js → info-ClsdYA4P.js} +1 -1
- package/packages/ui/dist/assets/{info-circle-DkeSWNKV.js → info-circle-DJmn4Bsv.js} +1 -1
- package/packages/ui/dist/assets/{lightbulb-DNlO4qKh.js → lightbulb-CXSftjXS.js} +1 -1
- package/packages/ui/dist/assets/{mail-kVQ8Jb9Y.js → mail-cdYKOl9P.js} +1 -1
- package/packages/ui/dist/assets/{metamask-sdk-CBalSvz7.js → metamask-sdk-Co3aIEln.js} +1 -1
- package/packages/ui/dist/assets/{mobile-BEteuhF7.js → mobile-DEHYlk8L.js} +1 -1
- package/packages/ui/dist/assets/{more-DBWmXQli.js → more-Cq_fo8pI.js} +1 -1
- package/packages/ui/dist/assets/{network-placeholder-Dg1uUHiL.js → network-placeholder-_dLCK4xB.js} +1 -1
- package/packages/ui/dist/assets/{nftPlaceholder-i3AHSiD9.js → nftPlaceholder-Dz4HKEr4.js} +1 -1
- package/packages/ui/dist/assets/{off-BtMm0fi2.js → off-B1k1lhkr.js} +1 -1
- package/packages/ui/dist/assets/{parseSignature-Cb5FlWWg.js → parseSignature-Cr0ptV2X.js} +1 -1
- package/packages/ui/dist/assets/{play-store-iKKkXa6a.js → play-store-lYqe4eeL.js} +1 -1
- package/packages/ui/dist/assets/{plus-CA5NaRtb.js → plus-QMgh1krr.js} +1 -1
- package/packages/ui/dist/assets/{qr-code-D2kiqR7h.js → qr-code-ClVHbZWN.js} +1 -1
- package/packages/ui/dist/assets/{recycle-horizontal-Dcme7R03.js → recycle-horizontal-CxGYnWid.js} +1 -1
- package/packages/ui/dist/assets/{refresh-Dega3sDp.js → refresh-CPysMza_.js} +1 -1
- package/packages/ui/dist/assets/{reown-logo-xNkksyWJ.js → reown-logo-OoL_zJd0.js} +1 -1
- package/packages/ui/dist/assets/{search-HYl7NO8x.js → search-2GaRbf1I.js} +1 -1
- package/packages/ui/dist/assets/{secp256k1-Cxd6_SiH.js → secp256k1-BrB8qSSy.js} +1 -1
- package/packages/ui/dist/assets/{send-CJU8CUAo.js → send-CC2UuIfD.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontal-IMUKiUre.js → swapHorizontal-BRqYwsqT.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalBold-CNYnNJ9-.js → swapHorizontalBold-Bj0GSRq9.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalMedium-B9VxEYsT.js → swapHorizontalMedium-oLOjpU2A.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalRoundedBold-Dz33l_Jh.js → swapHorizontalRoundedBold-TJ652QXb.js} +1 -1
- package/packages/ui/dist/assets/{swapVertical-CHUmjVJ0.js → swapVertical-e0NLyV3x.js} +1 -1
- package/packages/ui/dist/assets/{telegram-kl9S2mbU.js → telegram-WhJHVeoU.js} +1 -1
- package/packages/ui/dist/assets/{three-dots-U5lhA1Am.js → three-dots-BlBAOyW-.js} +1 -1
- package/packages/ui/dist/assets/{twitch-KTEUWXEp.js → twitch-BH7vWmPc.js} +1 -1
- package/packages/ui/dist/assets/{twitterIcon-BHiq8mRg.js → twitterIcon-As0Nkanp.js} +1 -1
- package/packages/ui/dist/assets/{verify-CfN-BXNd.js → verify-BEJ0QuLl.js} +1 -1
- package/packages/ui/dist/assets/{verify-filled-DwZccetj.js → verify-filled-B8Ww2N7z.js} +1 -1
- package/packages/ui/dist/assets/{w3m-modal-CS-PFqPE.js → w3m-modal-5rOSZgOR.js} +1 -1
- package/packages/ui/dist/assets/{wallet-DVlGkhOY.js → wallet-CAfC3aml.js} +1 -1
- package/packages/ui/dist/assets/{wallet-placeholder-CvR_iEWX.js → wallet-placeholder-4RZI464Z.js} +1 -1
- package/packages/ui/dist/assets/{walletconnect-8pZBDvVI.js → walletconnect-BiltKqAe.js} +1 -1
- package/packages/ui/dist/assets/{warning-circle-ylLEE0Yp.js → warning-circle-CI4jqpHo.js} +1 -1
- package/packages/ui/dist/assets/{x-C_TBsTMj.js → x-FBttjBWO.js} +1 -1
- package/packages/ui/dist/index.html +2 -2
- package/scripts/check-init.mjs +2 -3
- package/templates/custom-mandate/README.md +31 -0
- package/templates/custom-mandate/mandates/BoundedCallPermission.sol +8 -2
- package/templates/custom-mandate/mandates/SailCalldata.sol +118 -0
- package/templates/default/.env.example +20 -0
- package/templates/{dca-rebalancer → default}/.github/workflows/agent-tick.yml +8 -7
- package/templates/{dca-rebalancer → default}/.sail/config.json +2 -2
- package/templates/default/AGENTS.md +171 -0
- package/templates/default/README.md +16 -0
- package/templates/default/examples/dca/README.md +16 -0
- package/templates/default/examples/dca/agent.ts +174 -0
- package/templates/{dca-rebalancer/src → default/examples/dca}/mandate.ts +9 -31
- package/templates/{dca-rebalancer → default}/package.json +2 -2
- package/templates/default/src/agent.ts +37 -0
- package/templates/default/src/config.ts +24 -0
- package/templates/default/src/mandate.ts +22 -0
- package/templates/default/tsconfig.json +17 -0
- package/templates/lifi-permissions/README.md +1 -1
- package/packages/ui/dist/assets/cursor-DV7rOqbJ.js +0 -3
- package/packages/ui/dist/assets/index-CKxgNxS9.css +0 -1
- package/packages/ui/dist/assets/index-Q2Yai4Fe.js +0 -2103
- package/scripts/postinstall.js +0 -366
- package/templates/dca-rebalancer/.env.example +0 -6
- package/templates/dca-rebalancer/AGENTS.md +0 -246
- package/templates/dca-rebalancer/AGENT_PLAYBOOK.md +0 -110
- package/templates/dca-rebalancer/README.md +0 -16
- package/templates/dca-rebalancer/src/agent.ts +0 -253
- package/templates/dca-rebalancer/src/config.ts +0 -27
- package/templates/dca-rebalancer/tsconfig.json +0 -8
- /package/templates/{dca-rebalancer → default}/.cursor/rules +0 -0
- /package/templates/{dca-rebalancer → default}/.sail/.gitkeep +0 -0
- /package/templates/{dca-rebalancer → default}/.sail/README.md +0 -0
- /package/templates/{dca-rebalancer → default}/CLAUDE.md +0 -0
- /package/templates/{dca-rebalancer → default}/_gitignore +0 -0
- /package/templates/{dca-rebalancer → default}/docs/PERMISSION_MODEL.md +0 -0
- /package/templates/{dca-rebalancer → default}/ui/README.md +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approveAndCallBatch.js","sourceRoot":"","sources":["../../src/templates/approveAndCallBatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"approveAndCallBatch.js","sourceRoot":"","sources":["../../src/templates/approveAndCallBatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import type { Address, PermissionTemplate } from "../types.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Params for SharedBoundedBorrowPermission.
|
|
4
|
+
*
|
|
5
|
+
* Matches the on-chain `_applyConfig` decode exactly:
|
|
6
|
+
* abi.decode(params, (address[], address[], uint256, uint256, address, address, uint256))
|
|
7
|
+
* → protocols, assets, maxAmountPerTx, maxLtvBps, collateralOracle, borrowOracle, maxPriceAgeSec
|
|
8
|
+
*/
|
|
3
9
|
export type BoundedBorrowParams = {
|
|
4
|
-
/**
|
|
5
|
-
|
|
10
|
+
/** Lending-protocol contract addresses the agent may call (Aave V3 / Morpho / Compound). */
|
|
11
|
+
protocols: Address[];
|
|
12
|
+
/** Allowed borrow asset addresses. */
|
|
13
|
+
assets: Address[];
|
|
14
|
+
/** Maximum borrow amount of a single tx, in the asset's base units. */
|
|
15
|
+
maxAmountPerTx: bigint;
|
|
6
16
|
/** Maximum resulting LTV in basis points (e.g. 7500 = 75%). */
|
|
7
17
|
maxLtvBps: number;
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
|
|
18
|
+
/** Oracle pricing the collateral asset; `address(0)` disables the LTV check. */
|
|
19
|
+
collateralOracle: Address;
|
|
20
|
+
/** Oracle pricing the borrow asset; `address(0)` disables the LTV check. */
|
|
21
|
+
borrowOracle: Address;
|
|
22
|
+
/** Maximum oracle price age in seconds. Must be > 0 when both oracles are set. */
|
|
23
|
+
maxPriceAgeSec: number;
|
|
14
24
|
};
|
|
15
25
|
export declare const boundedBorrowTemplate: PermissionTemplate<BoundedBorrowParams>;
|
|
16
26
|
//# sourceMappingURL=boundedBorrow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundedBorrow.d.ts","sourceRoot":"","sources":["../../src/templates/boundedBorrow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExF
|
|
1
|
+
{"version":3,"file":"boundedBorrow.d.ts","sourceRoot":"","sources":["../../src/templates/boundedBorrow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,4FAA4F;IAC5F,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,sCAAsC;IACtC,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,YAAY,EAAE,OAAO,CAAC;IACtB,kFAAkF;IAClF,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAcF,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,CAAC,mBAAmB,CAsDzE,CAAC"}
|
|
@@ -1,32 +1,39 @@
|
|
|
1
1
|
import { decodeAbiParameters, encodeAbiParameters } from "viem";
|
|
2
2
|
const ABI = [
|
|
3
|
-
{ name: "
|
|
3
|
+
{ name: "protocols", type: "address[]" },
|
|
4
|
+
{ name: "assets", type: "address[]" },
|
|
5
|
+
{ name: "maxAmountPerTx", type: "uint256" },
|
|
4
6
|
{ name: "maxLtvBps", type: "uint256" },
|
|
5
|
-
{ name: "
|
|
6
|
-
{ name: "
|
|
7
|
-
{ name: "
|
|
7
|
+
{ name: "collateralOracle", type: "address" },
|
|
8
|
+
{ name: "borrowOracle", type: "address" },
|
|
9
|
+
{ name: "maxPriceAgeSec", type: "uint256" },
|
|
8
10
|
];
|
|
11
|
+
const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
9
12
|
export const boundedBorrowTemplate = {
|
|
10
13
|
name: "SharedBoundedBorrowPermission",
|
|
11
14
|
address: "0x0000000000000000000000000000000000000000",
|
|
12
15
|
encoder: {
|
|
13
16
|
encode(params) {
|
|
14
17
|
return encodeAbiParameters(ABI, [
|
|
15
|
-
|
|
18
|
+
params.protocols,
|
|
19
|
+
params.assets,
|
|
20
|
+
params.maxAmountPerTx,
|
|
16
21
|
BigInt(params.maxLtvBps),
|
|
17
|
-
params.
|
|
18
|
-
params.
|
|
19
|
-
params.
|
|
22
|
+
params.collateralOracle,
|
|
23
|
+
params.borrowOracle,
|
|
24
|
+
BigInt(params.maxPriceAgeSec),
|
|
20
25
|
]);
|
|
21
26
|
},
|
|
22
27
|
decode(data) {
|
|
23
28
|
const decoded = decodeAbiParameters(ABI, data);
|
|
24
29
|
return {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
protocols: [...decoded[0]],
|
|
31
|
+
assets: [...decoded[1]],
|
|
32
|
+
maxAmountPerTx: decoded[2],
|
|
33
|
+
maxLtvBps: Number(decoded[3]),
|
|
34
|
+
collateralOracle: decoded[4],
|
|
35
|
+
borrowOracle: decoded[5],
|
|
36
|
+
maxPriceAgeSec: Number(decoded[6]),
|
|
30
37
|
};
|
|
31
38
|
},
|
|
32
39
|
},
|
|
@@ -36,17 +43,19 @@ export const boundedBorrowTemplate = {
|
|
|
36
43
|
if (params.maxLtvBps > 8000) {
|
|
37
44
|
warnings.push(`High LTV cap: ${params.maxLtvBps / 100}% — liquidation risk is elevated`);
|
|
38
45
|
}
|
|
39
|
-
if (params.
|
|
40
|
-
warnings.push(
|
|
46
|
+
if (params.collateralOracle === ZERO_ADDRESS || params.borrowOracle === ZERO_ADDRESS) {
|
|
47
|
+
warnings.push("LTV not enforced — both collateral and borrow oracles must be set");
|
|
41
48
|
}
|
|
42
49
|
return {
|
|
43
50
|
templateName: "SharedBoundedBorrowPermission",
|
|
44
51
|
humanReadable: [
|
|
45
|
-
`Maximum borrow
|
|
52
|
+
`Maximum borrow per tx: ${params.maxAmountPerTx.toString()} (asset base units)`,
|
|
46
53
|
`Maximum LTV: ${params.maxLtvBps / 100}%`,
|
|
47
|
-
`Allowed
|
|
48
|
-
`Allowed
|
|
49
|
-
`
|
|
54
|
+
`Allowed protocols: ${params.protocols.join(", ")}`,
|
|
55
|
+
`Allowed assets: ${params.assets.join(", ")}`,
|
|
56
|
+
`Collateral oracle: ${params.collateralOracle}`,
|
|
57
|
+
`Borrow oracle: ${params.borrowOracle}`,
|
|
58
|
+
`Max oracle price age: ${params.maxPriceAgeSec}s`,
|
|
50
59
|
],
|
|
51
60
|
warnings,
|
|
52
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundedBorrow.js","sourceRoot":"","sources":["../../src/templates/boundedBorrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"boundedBorrow.js","sourceRoot":"","sources":["../../src/templates/boundedBorrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AA2BhE,MAAM,GAAG,GAAG;IACV,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IACxC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3C,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;IACtC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC7C,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;IACzC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;CACnC,CAAC;AAEX,MAAM,YAAY,GAAG,4CAA4C,CAAC;AAElE,MAAM,CAAC,MAAM,qBAAqB,GAA4C;IAC5E,IAAI,EAAE,+BAA+B;IACrC,OAAO,EAAE,4CAA4C;IAErD,OAAO,EAAE;QACP,MAAM,CAAC,MAA2B;YAChC,OAAO,mBAAmB,CAAC,GAAG,EAAE;gBAC9B,MAAM,CAAC,SAAS;gBAChB,MAAM,CAAC,MAAM;gBACb,MAAM,CAAC,cAAc;gBACrB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;gBACxB,MAAM,CAAC,gBAAgB;gBACvB,MAAM,CAAC,YAAY;gBACnB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAS;YACd,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,OAAO;gBACL,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACvB,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1B,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC7B,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC5B,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;gBACxB,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACnC,CAAC;QACJ,CAAC;KACF;IAED,SAAS,EAAE;QACT,OAAO,CAAC,MAA2B;YACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,SAAS,GAAG,GAAG,kCAAkC,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,MAAM,CAAC,gBAAgB,KAAK,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;gBACrF,QAAQ,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;YACrF,CAAC;YACD,OAAO;gBACL,YAAY,EAAE,+BAA+B;gBAC7C,aAAa,EAAE;oBACb,0BAA0B,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,qBAAqB;oBAC/E,gBAAgB,MAAM,CAAC,SAAS,GAAG,GAAG,GAAG;oBACzC,sBAAsB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACnD,mBAAmB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC7C,sBAAsB,MAAM,CAAC,gBAAgB,EAAE;oBAC/C,kBAAkB,MAAM,CAAC,YAAY,EAAE;oBACvC,yBAAyB,MAAM,CAAC,cAAc,GAAG;iBAClD;gBACD,QAAQ;aACT,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import type { Address, PermissionTemplate } from "../types.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Params for SharedBoundedSwapPermission.
|
|
4
|
+
*
|
|
5
|
+
* Matches the on-chain `_applyConfig` decode exactly:
|
|
6
|
+
* abi.decode(params, (address[], address[], uint256, uint256, address, uint256))
|
|
7
|
+
* → routers, tokensIn, tokensOut, maxAmountPerTx, maxSlippageBps, priceOracle, maxPriceAgeSec
|
|
8
|
+
*/
|
|
3
9
|
export type BoundedSwapParams = {
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
/** Maximum allowed slippage in basis points (e.g. 50 = 0.5%). */
|
|
7
|
-
maxSlippageBps: number;
|
|
10
|
+
/** Router/aggregator addresses the agent may call (e.g. Uniswap V3 SwapRouter). */
|
|
11
|
+
routers: Address[];
|
|
8
12
|
/** Token addresses allowed as swap input. */
|
|
9
|
-
|
|
13
|
+
tokensIn: Address[];
|
|
10
14
|
/** Token addresses allowed as swap output. */
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
|
|
15
|
+
tokensOut: Address[];
|
|
16
|
+
/** Maximum input amount of a single swap, in the input token's base units. */
|
|
17
|
+
maxAmountPerTx: bigint;
|
|
18
|
+
/** Maximum allowed slippage in basis points (e.g. 50 = 0.5%). */
|
|
19
|
+
maxSlippageBps: number;
|
|
20
|
+
/** Price oracle used for the slippage check; `address(0)` disables it. */
|
|
21
|
+
priceOracle: Address;
|
|
22
|
+
/** Maximum oracle price age in seconds. Must be > 0 when `priceOracle` is set. */
|
|
23
|
+
maxPriceAgeSec: number;
|
|
14
24
|
};
|
|
15
25
|
export declare const boundedSwapTemplate: PermissionTemplate<BoundedSwapParams>;
|
|
16
26
|
//# sourceMappingURL=boundedSwap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundedSwap.d.ts","sourceRoot":"","sources":["../../src/templates/boundedSwap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExF
|
|
1
|
+
{"version":3,"file":"boundedSwap.d.ts","sourceRoot":"","sources":["../../src/templates/boundedSwap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mFAAmF;IACnF,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,WAAW,EAAE,OAAO,CAAC;IACrB,kFAAkF;IAClF,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAcF,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,iBAAiB,CAuDrE,CAAC"}
|
|
@@ -1,52 +1,62 @@
|
|
|
1
1
|
import { decodeAbiParameters, encodeAbiParameters } from "viem";
|
|
2
2
|
const ABI = [
|
|
3
|
-
{ name: "
|
|
3
|
+
{ name: "routers", type: "address[]" },
|
|
4
|
+
{ name: "tokensIn", type: "address[]" },
|
|
5
|
+
{ name: "tokensOut", type: "address[]" },
|
|
6
|
+
{ name: "maxAmountPerTx", type: "uint256" },
|
|
4
7
|
{ name: "maxSlippageBps", type: "uint256" },
|
|
5
|
-
{ name: "
|
|
6
|
-
{ name: "
|
|
7
|
-
{ name: "allowedProtocols", type: "string[]" },
|
|
8
|
+
{ name: "priceOracle", type: "address" },
|
|
9
|
+
{ name: "maxPriceAgeSec", type: "uint256" },
|
|
8
10
|
];
|
|
11
|
+
const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
9
12
|
export const boundedSwapTemplate = {
|
|
10
13
|
name: "SharedBoundedSwapPermission",
|
|
11
14
|
address: "0x0000000000000000000000000000000000000000",
|
|
12
15
|
encoder: {
|
|
13
16
|
encode(params) {
|
|
14
17
|
return encodeAbiParameters(ABI, [
|
|
15
|
-
|
|
18
|
+
params.routers,
|
|
19
|
+
params.tokensIn,
|
|
20
|
+
params.tokensOut,
|
|
21
|
+
params.maxAmountPerTx,
|
|
16
22
|
BigInt(params.maxSlippageBps),
|
|
17
|
-
params.
|
|
18
|
-
params.
|
|
19
|
-
params.allowedProtocols,
|
|
23
|
+
params.priceOracle,
|
|
24
|
+
BigInt(params.maxPriceAgeSec),
|
|
20
25
|
]);
|
|
21
26
|
},
|
|
22
27
|
decode(data) {
|
|
23
28
|
const decoded = decodeAbiParameters(ABI, data);
|
|
24
29
|
return {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
routers: [...decoded[0]],
|
|
31
|
+
tokensIn: [...decoded[1]],
|
|
32
|
+
tokensOut: [...decoded[2]],
|
|
33
|
+
maxAmountPerTx: decoded[3],
|
|
34
|
+
maxSlippageBps: Number(decoded[4]),
|
|
35
|
+
priceOracle: decoded[5],
|
|
36
|
+
maxPriceAgeSec: Number(decoded[6]),
|
|
30
37
|
};
|
|
31
38
|
},
|
|
32
39
|
},
|
|
33
40
|
explainer: {
|
|
34
41
|
explain(params) {
|
|
35
42
|
const warnings = [];
|
|
36
|
-
if (params.maxSwapValueUsd > 10_000) {
|
|
37
|
-
warnings.push(`High per-swap limit: $${params.maxSwapValueUsd.toLocaleString()}`);
|
|
38
|
-
}
|
|
39
43
|
if (params.maxSlippageBps > 100) {
|
|
40
44
|
warnings.push(`High slippage tolerance: ${params.maxSlippageBps / 100}%`);
|
|
41
45
|
}
|
|
46
|
+
if (params.priceOracle === ZERO_ADDRESS) {
|
|
47
|
+
warnings.push("No price oracle configured — swaps are not checked against a reference price");
|
|
48
|
+
}
|
|
42
49
|
return {
|
|
43
50
|
templateName: "SharedBoundedSwapPermission",
|
|
44
51
|
humanReadable: [
|
|
45
|
-
`Maximum swap
|
|
52
|
+
`Maximum input per swap: ${params.maxAmountPerTx.toString()} (input-token base units)`,
|
|
46
53
|
`Maximum slippage: ${params.maxSlippageBps / 100}%`,
|
|
47
|
-
`Allowed
|
|
48
|
-
`Allowed
|
|
49
|
-
`Allowed
|
|
54
|
+
`Allowed routers: ${params.routers.join(", ")}`,
|
|
55
|
+
`Allowed input tokens: ${params.tokensIn.join(", ")}`,
|
|
56
|
+
`Allowed output tokens: ${params.tokensOut.join(", ")}`,
|
|
57
|
+
params.priceOracle === ZERO_ADDRESS
|
|
58
|
+
? "Price oracle: none"
|
|
59
|
+
: `Price oracle: ${params.priceOracle} (max age ${params.maxPriceAgeSec}s)`,
|
|
50
60
|
],
|
|
51
61
|
warnings,
|
|
52
62
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundedSwap.js","sourceRoot":"","sources":["../../src/templates/boundedSwap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"boundedSwap.js","sourceRoot":"","sources":["../../src/templates/boundedSwap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AA2BhE,MAAM,GAAG,GAAG;IACV,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;IACtC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;IACvC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IACxC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3C,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3C,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;IACxC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;CACnC,CAAC;AAEX,MAAM,YAAY,GAAG,4CAA4C,CAAC;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAA0C;IACxE,IAAI,EAAE,6BAA6B;IACnC,OAAO,EAAE,4CAA4C;IAErD,OAAO,EAAE;QACP,MAAM,CAAC,MAAyB;YAC9B,OAAO,mBAAmB,CAAC,GAAG,EAAE;gBAC9B,MAAM,CAAC,OAAO;gBACd,MAAM,CAAC,QAAQ;gBACf,MAAM,CAAC,SAAS;gBAChB,MAAM,CAAC,cAAc;gBACrB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;gBAC7B,MAAM,CAAC,WAAW;gBAClB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAS;YACd,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxB,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzB,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1B,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvB,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACnC,CAAC;QACJ,CAAC;KACF;IAED,SAAS,EAAE;QACT,OAAO,CAAC,MAAyB;YAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,cAAc,GAAG,GAAG,GAAG,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;YAChG,CAAC;YACD,OAAO;gBACL,YAAY,EAAE,6BAA6B;gBAC3C,aAAa,EAAE;oBACb,2BAA2B,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,2BAA2B;oBACtF,qBAAqB,MAAM,CAAC,cAAc,GAAG,GAAG,GAAG;oBACnD,oBAAoB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC/C,yBAAyB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACrD,0BAA0B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACvD,MAAM,CAAC,WAAW,KAAK,YAAY;wBACjC,CAAC,CAAC,oBAAoB;wBACtB,CAAC,CAAC,iBAAiB,MAAM,CAAC,WAAW,aAAa,MAAM,CAAC,cAAc,IAAI;iBAC9E;gBACD,QAAQ;aACT,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
|
|
@@ -1,14 +1,40 @@
|
|
|
1
1
|
import type { Address, PermissionTemplate } from "../types.js";
|
|
2
|
-
/**
|
|
2
|
+
/** Swap sub-domain config — mirrors the contract's `SwapConfig` struct. */
|
|
3
|
+
export type DefiBundleSwapConfig = {
|
|
4
|
+
routers: Address[];
|
|
5
|
+
tokensIn: Address[];
|
|
6
|
+
tokensOut: Address[];
|
|
7
|
+
maxAmountPerTx: bigint;
|
|
8
|
+
maxSlippageBps: number;
|
|
9
|
+
priceOracle: Address;
|
|
10
|
+
maxPriceAgeSec: number;
|
|
11
|
+
};
|
|
12
|
+
/** Borrow sub-domain config — mirrors the contract's `BorrowConfig` struct. */
|
|
13
|
+
export type DefiBundleBorrowConfig = {
|
|
14
|
+
protocols: Address[];
|
|
15
|
+
assets: Address[];
|
|
16
|
+
maxAmountPerTx: bigint;
|
|
17
|
+
maxLtvBps: number;
|
|
18
|
+
collateralOracle: Address;
|
|
19
|
+
borrowOracle: Address;
|
|
20
|
+
maxPriceAgeSec: number;
|
|
21
|
+
};
|
|
22
|
+
/** Transfer sub-domain config — mirrors the contract's `TransferConfig` struct. */
|
|
23
|
+
export type DefiBundleTransferConfig = {
|
|
24
|
+
recipients: Address[];
|
|
25
|
+
tokens: Address[];
|
|
26
|
+
maxAmountPerTx: bigint;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Params for SharedDeFiBundlePermission.
|
|
30
|
+
*
|
|
31
|
+
* Matches the on-chain `_applyConfig` decode exactly:
|
|
32
|
+
* abi.decode(params, (SwapConfig, BorrowConfig, TransferConfig))
|
|
33
|
+
*/
|
|
3
34
|
export type DefiBundleParams = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
allowedProtocols: string[];
|
|
8
|
-
/** Allowed action types within the bundle (e.g. ["swap", "deposit", "borrow"]). */
|
|
9
|
-
allowedActions: string[];
|
|
10
|
-
/** Allowed token addresses that the bundle may interact with. */
|
|
11
|
-
allowedTokens: Address[];
|
|
35
|
+
swap: DefiBundleSwapConfig;
|
|
36
|
+
borrow: DefiBundleBorrowConfig;
|
|
37
|
+
transfer: DefiBundleTransferConfig;
|
|
12
38
|
};
|
|
13
39
|
export declare const defiBundleTemplate: PermissionTemplate<DefiBundleParams>;
|
|
14
40
|
//# sourceMappingURL=defiBundle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defiBundle.d.ts","sourceRoot":"","sources":["../../src/templates/defiBundle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExF,
|
|
1
|
+
{"version":3,"file":"defiBundle.d.ts","sourceRoot":"","sources":["../../src/templates/defiBundle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExF,2EAA2E;AAC3E,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,wBAAwB,CAAC;CACpC,CAAC;AAkCF,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CAAC,gBAAgB,CAqFnE,CAAC"}
|
|
@@ -1,48 +1,110 @@
|
|
|
1
1
|
import { decodeAbiParameters, encodeAbiParameters } from "viem";
|
|
2
|
+
const SWAP_COMPONENTS = [
|
|
3
|
+
{ name: "routers", type: "address[]" },
|
|
4
|
+
{ name: "tokensIn", type: "address[]" },
|
|
5
|
+
{ name: "tokensOut", type: "address[]" },
|
|
6
|
+
{ name: "maxAmountPerTx", type: "uint256" },
|
|
7
|
+
{ name: "maxSlippageBps", type: "uint256" },
|
|
8
|
+
{ name: "priceOracle", type: "address" },
|
|
9
|
+
{ name: "maxPriceAgeSec", type: "uint256" },
|
|
10
|
+
];
|
|
11
|
+
const BORROW_COMPONENTS = [
|
|
12
|
+
{ name: "protocols", type: "address[]" },
|
|
13
|
+
{ name: "assets", type: "address[]" },
|
|
14
|
+
{ name: "maxAmountPerTx", type: "uint256" },
|
|
15
|
+
{ name: "maxLtvBps", type: "uint256" },
|
|
16
|
+
{ name: "collateralOracle", type: "address" },
|
|
17
|
+
{ name: "borrowOracle", type: "address" },
|
|
18
|
+
{ name: "maxPriceAgeSec", type: "uint256" },
|
|
19
|
+
];
|
|
20
|
+
const TRANSFER_COMPONENTS = [
|
|
21
|
+
{ name: "recipients", type: "address[]" },
|
|
22
|
+
{ name: "tokens", type: "address[]" },
|
|
23
|
+
{ name: "maxAmountPerTx", type: "uint256" },
|
|
24
|
+
];
|
|
2
25
|
const ABI = [
|
|
3
|
-
{ name: "
|
|
4
|
-
{ name: "
|
|
5
|
-
{ name: "
|
|
6
|
-
{ name: "allowedTokens", type: "address[]" },
|
|
26
|
+
{ name: "swap", type: "tuple", components: SWAP_COMPONENTS },
|
|
27
|
+
{ name: "borrow", type: "tuple", components: BORROW_COMPONENTS },
|
|
28
|
+
{ name: "transfer", type: "tuple", components: TRANSFER_COMPONENTS },
|
|
7
29
|
];
|
|
8
30
|
export const defiBundleTemplate = {
|
|
9
|
-
name: "
|
|
31
|
+
name: "SharedDeFiBundlePermission",
|
|
10
32
|
address: "0x0000000000000000000000000000000000000000",
|
|
11
33
|
encoder: {
|
|
12
34
|
encode(params) {
|
|
13
35
|
return encodeAbiParameters(ABI, [
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
36
|
+
{
|
|
37
|
+
routers: params.swap.routers,
|
|
38
|
+
tokensIn: params.swap.tokensIn,
|
|
39
|
+
tokensOut: params.swap.tokensOut,
|
|
40
|
+
maxAmountPerTx: params.swap.maxAmountPerTx,
|
|
41
|
+
maxSlippageBps: BigInt(params.swap.maxSlippageBps),
|
|
42
|
+
priceOracle: params.swap.priceOracle,
|
|
43
|
+
maxPriceAgeSec: BigInt(params.swap.maxPriceAgeSec),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
protocols: params.borrow.protocols,
|
|
47
|
+
assets: params.borrow.assets,
|
|
48
|
+
maxAmountPerTx: params.borrow.maxAmountPerTx,
|
|
49
|
+
maxLtvBps: BigInt(params.borrow.maxLtvBps),
|
|
50
|
+
collateralOracle: params.borrow.collateralOracle,
|
|
51
|
+
borrowOracle: params.borrow.borrowOracle,
|
|
52
|
+
maxPriceAgeSec: BigInt(params.borrow.maxPriceAgeSec),
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
recipients: params.transfer.recipients,
|
|
56
|
+
tokens: params.transfer.tokens,
|
|
57
|
+
maxAmountPerTx: params.transfer.maxAmountPerTx,
|
|
58
|
+
},
|
|
18
59
|
]);
|
|
19
60
|
},
|
|
20
61
|
decode(data) {
|
|
21
|
-
const
|
|
62
|
+
const [swap, borrow, transfer] = decodeAbiParameters(ABI, data);
|
|
22
63
|
return {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
64
|
+
swap: {
|
|
65
|
+
routers: [...swap.routers],
|
|
66
|
+
tokensIn: [...swap.tokensIn],
|
|
67
|
+
tokensOut: [...swap.tokensOut],
|
|
68
|
+
maxAmountPerTx: swap.maxAmountPerTx,
|
|
69
|
+
maxSlippageBps: Number(swap.maxSlippageBps),
|
|
70
|
+
priceOracle: swap.priceOracle,
|
|
71
|
+
maxPriceAgeSec: Number(swap.maxPriceAgeSec),
|
|
72
|
+
},
|
|
73
|
+
borrow: {
|
|
74
|
+
protocols: [...borrow.protocols],
|
|
75
|
+
assets: [...borrow.assets],
|
|
76
|
+
maxAmountPerTx: borrow.maxAmountPerTx,
|
|
77
|
+
maxLtvBps: Number(borrow.maxLtvBps),
|
|
78
|
+
collateralOracle: borrow.collateralOracle,
|
|
79
|
+
borrowOracle: borrow.borrowOracle,
|
|
80
|
+
maxPriceAgeSec: Number(borrow.maxPriceAgeSec),
|
|
81
|
+
},
|
|
82
|
+
transfer: {
|
|
83
|
+
recipients: [...transfer.recipients],
|
|
84
|
+
tokens: [...transfer.tokens],
|
|
85
|
+
maxAmountPerTx: transfer.maxAmountPerTx,
|
|
86
|
+
},
|
|
27
87
|
};
|
|
28
88
|
},
|
|
29
89
|
},
|
|
30
90
|
explainer: {
|
|
31
91
|
explain(params) {
|
|
32
92
|
const warnings = [];
|
|
33
|
-
if (params.
|
|
34
|
-
warnings.push(`
|
|
93
|
+
if (params.swap.maxSlippageBps > 100) {
|
|
94
|
+
warnings.push(`High swap slippage tolerance: ${params.swap.maxSlippageBps / 100}%`);
|
|
95
|
+
}
|
|
96
|
+
if (params.borrow.maxLtvBps > 8000) {
|
|
97
|
+
warnings.push(`High borrow LTV cap: ${params.borrow.maxLtvBps / 100}%`);
|
|
35
98
|
}
|
|
36
|
-
if (params.
|
|
99
|
+
if (params.borrow.protocols.length > 0 && params.swap.routers.length > 0) {
|
|
37
100
|
warnings.push("Bundle permits both borrowing and swapping — review leverage exposure");
|
|
38
101
|
}
|
|
39
102
|
return {
|
|
40
|
-
templateName: "
|
|
103
|
+
templateName: "SharedDeFiBundlePermission",
|
|
41
104
|
humanReadable: [
|
|
42
|
-
`
|
|
43
|
-
`
|
|
44
|
-
`
|
|
45
|
-
`Allowed tokens: ${params.allowedTokens.join(", ")}`,
|
|
105
|
+
`Swap — routers: ${params.swap.routers.join(", ") || "none"}; max/tx: ${params.swap.maxAmountPerTx.toString()}; slippage: ${params.swap.maxSlippageBps / 100}%`,
|
|
106
|
+
`Borrow — protocols: ${params.borrow.protocols.join(", ") || "none"}; max/tx: ${params.borrow.maxAmountPerTx.toString()}; LTV: ${params.borrow.maxLtvBps / 100}%`,
|
|
107
|
+
`Transfer — recipients: ${params.transfer.recipients.join(", ") || "none"}; max/tx: ${params.transfer.maxAmountPerTx.toString()}`,
|
|
46
108
|
],
|
|
47
109
|
warnings,
|
|
48
110
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defiBundle.js","sourceRoot":"","sources":["../../src/templates/defiBundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"defiBundle.js","sourceRoot":"","sources":["../../src/templates/defiBundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
import type { Address, PermissionTemplate } from "../types.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Params for SharedPendlePermission.
|
|
4
|
+
*
|
|
5
|
+
* Matches the on-chain `_applyConfig` decode exactly:
|
|
6
|
+
* abi.decode(params, (address, address[], uint128, bool, bool, bool, bool, bool))
|
|
7
|
+
* → pendleRouter, allowedMarkets, maxAmountPerTx,
|
|
8
|
+
* allowLiquidityOps, allowPtSwaps, allowYtSwaps, allowMintRedeem, allowClaimYield
|
|
9
|
+
*/
|
|
3
10
|
export type PendleParams = {
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
/** Pendle market addresses the agent may interact with. */
|
|
11
|
+
/** Pendle Router V4 address the agent may call. Must be non-zero. */
|
|
12
|
+
pendleRouter: Address;
|
|
13
|
+
/** Pendle market (and YT, for mint/redeem) addresses the agent may interact with. */
|
|
7
14
|
allowedMarkets: Address[];
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
|
|
15
|
+
/** Maximum amount of a single tx, in base units (uint128). */
|
|
16
|
+
maxAmountPerTx: bigint;
|
|
17
|
+
/** Allow add/remove liquidity operations. */
|
|
18
|
+
allowLiquidityOps: boolean;
|
|
19
|
+
/** Allow PT swaps. */
|
|
20
|
+
allowPtSwaps: boolean;
|
|
21
|
+
/** Allow YT swaps. */
|
|
22
|
+
allowYtSwaps: boolean;
|
|
23
|
+
/** Allow mint / redeem of PY. */
|
|
24
|
+
allowMintRedeem: boolean;
|
|
25
|
+
/** Allow claiming yield (redeemDueInterestAndRewards). */
|
|
26
|
+
allowClaimYield: boolean;
|
|
12
27
|
};
|
|
13
28
|
export declare const pendleTemplate: PermissionTemplate<PendleParams>;
|
|
14
29
|
//# sourceMappingURL=pendle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pendle.d.ts","sourceRoot":"","sources":["../../src/templates/pendle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExF
|
|
1
|
+
{"version":3,"file":"pendle.d.ts","sourceRoot":"","sources":["../../src/templates/pendle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExF;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,qEAAqE;IACrE,YAAY,EAAE,OAAO,CAAC;IACtB,qFAAqF;IACrF,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,sBAAsB;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,iCAAiC;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC1D,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAeF,eAAO,MAAM,cAAc,EAAE,kBAAkB,CAAC,YAAY,CA4D3D,CAAC"}
|