@dev.sail.money/sailor 0.0.2-13 → 0.0.2-16
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/package.json +1 -1
- package/packages/cli/dist/index.cjs +292 -11
- package/packages/sdk/dist/intelligence.d.ts +1 -1
- package/packages/sdk/dist/intelligence.js +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/package.json +1 -0
|
@@ -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"}
|
|
@@ -1,47 +1,67 @@
|
|
|
1
1
|
import { decodeAbiParameters, encodeAbiParameters } from "viem";
|
|
2
2
|
const ABI = [
|
|
3
|
-
{ name: "
|
|
3
|
+
{ name: "pendleRouter", type: "address" },
|
|
4
4
|
{ name: "allowedMarkets", type: "address[]" },
|
|
5
|
-
{ name: "
|
|
6
|
-
{ name: "
|
|
5
|
+
{ name: "maxAmountPerTx", type: "uint128" },
|
|
6
|
+
{ name: "allowLiquidityOps", type: "bool" },
|
|
7
|
+
{ name: "allowPtSwaps", type: "bool" },
|
|
8
|
+
{ name: "allowYtSwaps", type: "bool" },
|
|
9
|
+
{ name: "allowMintRedeem", type: "bool" },
|
|
10
|
+
{ name: "allowClaimYield", type: "bool" },
|
|
7
11
|
];
|
|
12
|
+
const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
8
13
|
export const pendleTemplate = {
|
|
9
14
|
name: "SharedPendlePermission",
|
|
10
15
|
address: "0x0000000000000000000000000000000000000000",
|
|
11
16
|
encoder: {
|
|
12
17
|
encode(params) {
|
|
13
18
|
return encodeAbiParameters(ABI, [
|
|
14
|
-
|
|
19
|
+
params.pendleRouter,
|
|
15
20
|
params.allowedMarkets,
|
|
16
|
-
params.
|
|
17
|
-
|
|
21
|
+
params.maxAmountPerTx,
|
|
22
|
+
params.allowLiquidityOps,
|
|
23
|
+
params.allowPtSwaps,
|
|
24
|
+
params.allowYtSwaps,
|
|
25
|
+
params.allowMintRedeem,
|
|
26
|
+
params.allowClaimYield,
|
|
18
27
|
]);
|
|
19
28
|
},
|
|
20
29
|
decode(data) {
|
|
21
30
|
const decoded = decodeAbiParameters(ABI, data);
|
|
22
31
|
return {
|
|
23
|
-
|
|
32
|
+
pendleRouter: decoded[0],
|
|
24
33
|
allowedMarkets: [...decoded[1]],
|
|
25
|
-
|
|
26
|
-
|
|
34
|
+
maxAmountPerTx: decoded[2],
|
|
35
|
+
allowLiquidityOps: decoded[3],
|
|
36
|
+
allowPtSwaps: decoded[4],
|
|
37
|
+
allowYtSwaps: decoded[5],
|
|
38
|
+
allowMintRedeem: decoded[6],
|
|
39
|
+
allowClaimYield: decoded[7],
|
|
27
40
|
};
|
|
28
41
|
},
|
|
29
42
|
},
|
|
30
43
|
explainer: {
|
|
31
44
|
explain(params) {
|
|
32
45
|
const warnings = [];
|
|
33
|
-
if (params.
|
|
34
|
-
warnings.push("
|
|
46
|
+
if (params.pendleRouter === ZERO_ADDRESS) {
|
|
47
|
+
warnings.push("Pendle router is zero — configuration will revert on-chain");
|
|
35
48
|
}
|
|
36
49
|
if (params.allowedMarkets.length === 0) {
|
|
37
50
|
warnings.push("No markets specified — all Pendle market interactions will be blocked");
|
|
38
51
|
}
|
|
52
|
+
const ops = [
|
|
53
|
+
params.allowLiquidityOps && "liquidity",
|
|
54
|
+
params.allowPtSwaps && "PT swaps",
|
|
55
|
+
params.allowYtSwaps && "YT swaps",
|
|
56
|
+
params.allowMintRedeem && "mint/redeem",
|
|
57
|
+
params.allowClaimYield && "claim yield",
|
|
58
|
+
].filter(Boolean);
|
|
39
59
|
return {
|
|
40
60
|
templateName: "SharedPendlePermission",
|
|
41
61
|
humanReadable: [
|
|
42
|
-
`
|
|
43
|
-
`
|
|
44
|
-
`
|
|
62
|
+
`Pendle router: ${params.pendleRouter}`,
|
|
63
|
+
`Maximum amount per tx: ${params.maxAmountPerTx.toString()} (base units)`,
|
|
64
|
+
`Enabled operations: ${ops.length ? ops.join(", ") : "none"}`,
|
|
45
65
|
`Allowed markets (${params.allowedMarkets.length}): ${params.allowedMarkets.join(", ")}`,
|
|
46
66
|
],
|
|
47
67
|
warnings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pendle.js","sourceRoot":"","sources":["../../src/templates/pendle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"pendle.js","sourceRoot":"","sources":["../../src/templates/pendle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import type { Address, PermissionTemplate } from "../types.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Params for SharedTransferTargetPermission.
|
|
4
|
+
*
|
|
5
|
+
* Matches the on-chain `_applyConfig` decode exactly:
|
|
6
|
+
* abi.decode(params, (address[], address[], uint256))
|
|
7
|
+
* → recipients, tokens, maxAmountPerTx
|
|
8
|
+
*/
|
|
3
9
|
export type TransferTargetParams = {
|
|
4
|
-
/** Addresses that ERC-20 transfer() calls are allowed to send funds to. */
|
|
10
|
+
/** Addresses that ERC-20 transfer()/transferFrom() calls are allowed to send funds to. */
|
|
5
11
|
allowedRecipients: Address[];
|
|
6
|
-
/** Token addresses for which
|
|
12
|
+
/** Token addresses for which transfers are gated. The token is the call target. */
|
|
7
13
|
allowedTokens: Address[];
|
|
14
|
+
/** Maximum amount per transfer, in the token's base units. */
|
|
15
|
+
maxAmountPerTx: bigint;
|
|
8
16
|
};
|
|
9
17
|
export declare const transferTargetTemplate: PermissionTemplate<TransferTargetParams>;
|
|
10
18
|
//# sourceMappingURL=transferTarget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferTarget.d.ts","sourceRoot":"","sources":["../../src/templates/transferTarget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExF
|
|
1
|
+
{"version":3,"file":"transferTarget.d.ts","sourceRoot":"","sources":["../../src/templates/transferTarget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,0FAA0F;IAC1F,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAC7B,mFAAmF;IACnF,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAQF,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,oBAAoB,CA2C3E,CAAC"}
|
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
import { decodeAbiParameters, encodeAbiParameters } from "viem";
|
|
2
2
|
const ABI = [
|
|
3
|
-
{ name: "
|
|
4
|
-
{ name: "
|
|
3
|
+
{ name: "recipients", type: "address[]" },
|
|
4
|
+
{ name: "tokens", type: "address[]" },
|
|
5
|
+
{ name: "maxAmountPerTx", type: "uint256" },
|
|
5
6
|
];
|
|
6
7
|
export const transferTargetTemplate = {
|
|
7
8
|
name: "SharedTransferTargetPermission",
|
|
8
9
|
address: "0x0000000000000000000000000000000000000000",
|
|
9
10
|
encoder: {
|
|
10
11
|
encode(params) {
|
|
11
|
-
return encodeAbiParameters(ABI, [
|
|
12
|
+
return encodeAbiParameters(ABI, [
|
|
13
|
+
params.allowedRecipients,
|
|
14
|
+
params.allowedTokens,
|
|
15
|
+
params.maxAmountPerTx,
|
|
16
|
+
]);
|
|
12
17
|
},
|
|
13
18
|
decode(data) {
|
|
14
19
|
const decoded = decodeAbiParameters(ABI, data);
|
|
15
20
|
return {
|
|
16
21
|
allowedRecipients: [...decoded[0]],
|
|
17
22
|
allowedTokens: [...decoded[1]],
|
|
23
|
+
maxAmountPerTx: decoded[2],
|
|
18
24
|
};
|
|
19
25
|
},
|
|
20
26
|
},
|
|
@@ -24,14 +30,15 @@ export const transferTargetTemplate = {
|
|
|
24
30
|
if (params.allowedRecipients.length === 0) {
|
|
25
31
|
warnings.push("No recipients specified — all transfers will be blocked");
|
|
26
32
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
if (params.allowedTokens.length === 0) {
|
|
34
|
+
warnings.push("No tokens specified — all transfers will be blocked");
|
|
35
|
+
}
|
|
30
36
|
return {
|
|
31
37
|
templateName: "SharedTransferTargetPermission",
|
|
32
38
|
humanReadable: [
|
|
33
39
|
`ERC-20 transfers restricted to ${params.allowedRecipients.length} approved recipient(s)`,
|
|
34
|
-
`
|
|
40
|
+
`Gated tokens: ${params.allowedTokens.join(", ")}`,
|
|
41
|
+
`Maximum amount per transfer: ${params.maxAmountPerTx.toString()} (base units)`,
|
|
35
42
|
`Approved recipients: ${params.allowedRecipients.join(", ")}`,
|
|
36
43
|
],
|
|
37
44
|
warnings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferTarget.js","sourceRoot":"","sources":["../../src/templates/transferTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"transferTarget.js","sourceRoot":"","sources":["../../src/templates/transferTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAmBhE,MAAM,GAAG,GAAG;IACV,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE;IACzC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;CACnC,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAA6C;IAC9E,IAAI,EAAE,gCAAgC;IACtC,OAAO,EAAE,4CAA4C;IAErD,OAAO,EAAE;QACP,MAAM,CAAC,MAA4B;YACjC,OAAO,mBAAmB,CAAC,GAAG,EAAE;gBAC9B,MAAM,CAAC,iBAAiB;gBACxB,MAAM,CAAC,aAAa;gBACpB,MAAM,CAAC,cAAc;aACtB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAS;YACd,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,OAAO;gBACL,iBAAiB,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,aAAa,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9B,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;aAC3B,CAAC;QACJ,CAAC;KACF;IAED,SAAS,EAAE;QACT,OAAO,CAAC,MAA4B;YAClC,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1C,QAAQ,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACvE,CAAC;YACD,OAAO;gBACL,YAAY,EAAE,gCAAgC;gBAC9C,aAAa,EAAE;oBACb,kCAAkC,MAAM,CAAC,iBAAiB,CAAC,MAAM,wBAAwB;oBACzF,iBAAiB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAClD,gCAAgC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe;oBAC/E,wBAAwB,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAC9D;gBACD,QAAQ;aACT,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"prebuild": "node scripts/generate-intelligence.mjs",
|
|
40
40
|
"build": "tsc -p tsconfig.json",
|
|
41
41
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
42
|
+
"test": "tsx --test src/**/*.test.ts",
|
|
42
43
|
"generate:intelligence": "node scripts/generate-intelligence.mjs"
|
|
43
44
|
},
|
|
44
45
|
"peerDependencies": {
|