@grimoirelabs/venues 0.5.0 → 0.6.0

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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=pendle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pendle.d.ts","sourceRoot":"","sources":["../../src/cli/pendle.ts"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env node
2
+ import { createPendleAdapter } from "../pendle.js";
3
+ import { getOption, parseArgs, printResult, requireOption } from "./utils.js";
4
+ const DEFAULT_BASE_URL = "https://api-v2.pendle.finance/core";
5
+ async function main() {
6
+ const { command, options } = parseArgs(process.argv.slice(2));
7
+ if (!command || command === "help" || options.help) {
8
+ printUsage();
9
+ return;
10
+ }
11
+ const format = (getOption(options, "format") ?? "auto");
12
+ const baseUrl = (getOption(options, "base-url") ??
13
+ process.env.PENDLE_API_BASE_URL ??
14
+ DEFAULT_BASE_URL).replace(/\/$/, "");
15
+ switch (command) {
16
+ case "info": {
17
+ const adapter = createPendleAdapter({ baseUrl });
18
+ printResult({
19
+ ...adapter.meta,
20
+ baseUrl,
21
+ }, format);
22
+ return;
23
+ }
24
+ case "chains": {
25
+ const data = await fetchJson(baseUrl, "/v1/chains");
26
+ printResult(data, format);
27
+ return;
28
+ }
29
+ case "supported-aggregators": {
30
+ const chainId = Number.parseInt(requireOption(options, "chain"), 10);
31
+ const data = await fetchJson(baseUrl, `/v1/sdk/${chainId}/supported-aggregators`);
32
+ printResult(data, format);
33
+ return;
34
+ }
35
+ case "markets": {
36
+ const params = new URLSearchParams();
37
+ const chain = getOption(options, "chain");
38
+ const active = getOption(options, "active");
39
+ if (chain)
40
+ params.set("chainId", chain);
41
+ if (active)
42
+ params.set("isActive", normalizeBooleanOption(active, "active"));
43
+ const path = `/v1/markets/all${params.size > 0 ? `?${params.toString()}` : ""}`;
44
+ const data = await fetchJson(baseUrl, path);
45
+ printResult(data, format);
46
+ return;
47
+ }
48
+ case "assets": {
49
+ const params = new URLSearchParams();
50
+ const chain = getOption(options, "chain");
51
+ const type = getOption(options, "type");
52
+ if (chain)
53
+ params.set("chainId", chain);
54
+ if (type)
55
+ params.set("type", normalizeAssetType(type));
56
+ const path = `/v1/assets/all${params.size > 0 ? `?${params.toString()}` : ""}`;
57
+ const data = await fetchJson(baseUrl, path);
58
+ printResult(data, format);
59
+ return;
60
+ }
61
+ case "market-tokens": {
62
+ const chainId = Number.parseInt(requireOption(options, "chain"), 10);
63
+ const market = requireOption(options, "market");
64
+ const data = await fetchJson(baseUrl, `/v1/sdk/${chainId}/markets/${market}/tokens`);
65
+ printResult(data, format);
66
+ return;
67
+ }
68
+ default:
69
+ throw new Error(`Unknown command: ${command}`);
70
+ }
71
+ }
72
+ function printUsage() {
73
+ console.log("\nPendle CLI (grimoire-pendle)\n\nCommands:\n info [--base-url <url>] [--format <auto|json|table>]\n chains [--base-url <url>] [--format <auto|json|table>]\n supported-aggregators --chain <id> [--base-url <url>] [--format <auto|json|table>]\n markets [--chain <id>] [--active <true|false>] [--base-url <url>] [--format <auto|json|table>]\n assets [--chain <id>] [--type <PT|YT|LP|SY>] [--base-url <url>] [--format <auto|json|table>]\n market-tokens --chain <id> --market <address> [--base-url <url>] [--format <auto|json|table>]\n");
74
+ }
75
+ async function fetchJson(baseUrl, path) {
76
+ const response = await fetch(`${baseUrl}${path}`);
77
+ if (!response.ok) {
78
+ const text = await response.text();
79
+ throw new Error(`Pendle API request failed (${response.status}): ${text || response.statusText}`);
80
+ }
81
+ return (await response.json());
82
+ }
83
+ function normalizeBooleanOption(value, key) {
84
+ const lower = value.trim().toLowerCase();
85
+ if (lower === "true" || lower === "false")
86
+ return lower;
87
+ throw new Error(`Invalid --${key} value '${value}', expected true|false`);
88
+ }
89
+ function normalizeAssetType(value) {
90
+ const upper = value.trim().toUpperCase();
91
+ if (upper === "PT" || upper === "YT" || upper === "SY" || upper === "PENDLE_LP") {
92
+ return upper;
93
+ }
94
+ if (upper === "LP") {
95
+ return "PENDLE_LP";
96
+ }
97
+ throw new Error(`Invalid --type value '${value}', expected PT|YT|LP|SY`);
98
+ }
99
+ main().catch((error) => {
100
+ console.error(error instanceof Error ? error.message : String(error));
101
+ process.exit(1);
102
+ });
103
+ //# sourceMappingURL=pendle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pendle.js","sourceRoot":"","sources":["../../src/cli/pendle.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAqB,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjG,MAAM,gBAAgB,GAAG,oCAAoC,CAAC;AAE9D,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9D,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACnD,UAAU,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAiB,CAAC;IACxE,MAAM,OAAO,GAAG,CACd,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,gBAAgB,CACjB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAErB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACjD,WAAW,CACT;gBACE,GAAG,OAAO,CAAC,IAAI;gBACf,OAAO;aACR,EACD,MAAM,CACP,CAAC;YACF,OAAO;QACT,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,SAAS,CAA0B,OAAO,EAAE,YAAY,CAAC,CAAC;YAC7E,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACrE,MAAM,IAAI,GAAG,MAAM,SAAS,CAC1B,OAAO,EACP,WAAW,OAAO,wBAAwB,CAC3C,CAAC;YACF,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5C,IAAI,KAAK;gBAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC7E,MAAM,IAAI,GAAG,kBAAkB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAChF,MAAM,IAAI,GAAG,MAAM,SAAS,CAA0B,OAAO,EAAE,IAAI,CAAC,CAAC;YACrE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,iBAAiB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/E,MAAM,IAAI,GAAG,MAAM,SAAS,CAA0B,OAAO,EAAE,IAAI,CAAC,CAAC;YACrE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,MAAM,SAAS,CAC1B,OAAO,EACP,WAAW,OAAO,YAAY,MAAM,SAAS,CAC9C,CAAC;YACF,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CACT,0hBAA0hB,CAC3hB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CAAI,OAAe,EAAE,IAAY;IACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,8BAA8B,QAAQ,CAAC,MAAM,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;AACtC,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,GAAW;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,WAAW,KAAK,wBAAwB,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAChF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,yBAAyB,CAAC,CAAC;AAC3E,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,9 @@ import { aaveV3Adapter, createAaveV3Adapter } from "./aave-v3.js";
3
3
  import { acrossAdapter, createAcrossAdapter } from "./across.js";
4
4
  import { createHyperliquidAdapter, hyperliquidAdapter } from "./hyperliquid.js";
5
5
  import { createMorphoBlueAdapter, morphoBlueAdapter } from "./morpho-blue.js";
6
+ import { createPendleAdapter, pendleAdapter } from "./pendle.js";
6
7
  import { createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV3Adapter } from "./uniswap-v3.js";
7
8
  import { createUniswapV4Adapter, DEFAULT_ROUTERS as defaultUniswapV4Routers, uniswapV4Adapter } from "./uniswap-v4.js";
8
9
  export declare const adapters: VenueAdapter[];
9
- export { aaveV3Adapter, createAaveV3Adapter, acrossAdapter, createAcrossAdapter, uniswapV3Adapter, createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV4Adapter, createUniswapV4Adapter, defaultUniswapV4Routers, morphoBlueAdapter, createMorphoBlueAdapter, hyperliquidAdapter, createHyperliquidAdapter, };
10
+ export { aaveV3Adapter, createAaveV3Adapter, acrossAdapter, createAcrossAdapter, uniswapV3Adapter, createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV4Adapter, createUniswapV4Adapter, defaultUniswapV4Routers, morphoBlueAdapter, createMorphoBlueAdapter, hyperliquidAdapter, createHyperliquidAdapter, pendleAdapter, createPendleAdapter, };
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,QAAQ,EAAE,YAAY,EAOlC,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,GACzB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,QAAQ,EAAE,YAAY,EAQlC,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,GACpB,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ import { aaveV3Adapter, createAaveV3Adapter } from "./aave-v3.js";
2
2
  import { acrossAdapter, createAcrossAdapter } from "./across.js";
3
3
  import { createHyperliquidAdapter, hyperliquidAdapter } from "./hyperliquid.js";
4
4
  import { createMorphoBlueAdapter, morphoBlueAdapter } from "./morpho-blue.js";
5
+ import { createPendleAdapter, pendleAdapter } from "./pendle.js";
5
6
  import { createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV3Adapter } from "./uniswap-v3.js";
6
7
  import { createUniswapV4Adapter, DEFAULT_ROUTERS as defaultUniswapV4Routers, uniswapV4Adapter, } from "./uniswap-v4.js";
7
8
  export const adapters = [
@@ -11,6 +12,7 @@ export const adapters = [
11
12
  morphoBlueAdapter,
12
13
  hyperliquidAdapter,
13
14
  acrossAdapter,
15
+ pendleAdapter,
14
16
  ];
15
- export { aaveV3Adapter, createAaveV3Adapter, acrossAdapter, createAcrossAdapter, uniswapV3Adapter, createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV4Adapter, createUniswapV4Adapter, defaultUniswapV4Routers, morphoBlueAdapter, createMorphoBlueAdapter, hyperliquidAdapter, createHyperliquidAdapter, };
17
+ export { aaveV3Adapter, createAaveV3Adapter, acrossAdapter, createAcrossAdapter, uniswapV3Adapter, createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV4Adapter, createUniswapV4Adapter, defaultUniswapV4Routers, morphoBlueAdapter, createMorphoBlueAdapter, hyperliquidAdapter, createHyperliquidAdapter, pendleAdapter, createPendleAdapter, };
16
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,aAAa;CACd,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,GACzB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,aAAa;IACb,aAAa;CACd,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,GACpB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Address, VenueAdapter } from "@grimoirelabs/core";
2
+ type FetchFn = (input: Parameters<typeof fetch>[0], init?: Parameters<typeof fetch>[1]) => ReturnType<typeof fetch>;
3
+ export interface PendleAdapterConfig {
4
+ baseUrl?: string;
5
+ supportedChains?: number[];
6
+ slippageBps?: number;
7
+ tokenMap?: Record<number, Record<string, Address>>;
8
+ fetchFn?: FetchFn;
9
+ enableV2Fallback?: boolean;
10
+ }
11
+ export declare function createPendleAdapter(config?: PendleAdapterConfig): VenueAdapter;
12
+ export declare const pendleAdapter: VenueAdapter;
13
+ export {};
14
+ //# sourceMappingURL=pendle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pendle.d.ts","sourceRoot":"","sources":["../src/pendle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,OAAO,EAGP,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAK5B,KAAK,OAAO,GAAG,CACb,KAAK,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAClC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAC/B,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AAE9B,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAmGD,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,mBAAwB,GAAG,YAAY,CAuJlF;AAED,eAAO,MAAM,aAAa,cAAwB,CAAC"}
package/dist/pendle.js ADDED
@@ -0,0 +1,545 @@
1
+ import { assertSupportedConstraints } from "./constraints.js";
2
+ import { buildApprovalIfNeeded } from "./erc20.js";
3
+ import { isAddressLike, resolveTokenAddress } from "./token-registry.js";
4
+ const DEFAULT_BASE_URL = "https://api-v2.pendle.finance/core";
5
+ const DEFAULT_SLIPPAGE_BPS = 50;
6
+ const DEFAULT_SUPPORTED_CHAINS = [1, 10, 56, 100, 137, 42161, 8453];
7
+ const PENDLE_ACTIONS = [
8
+ "swap",
9
+ "add_liquidity",
10
+ "add_liquidity_dual",
11
+ "remove_liquidity",
12
+ "remove_liquidity_dual",
13
+ "mint_py",
14
+ "redeem_py",
15
+ "mint_sy",
16
+ "redeem_sy",
17
+ "transfer_liquidity",
18
+ "roll_over_pt",
19
+ "exit_market",
20
+ "convert_lp_to_pt",
21
+ "pendle_swap",
22
+ ];
23
+ const SINGLE_INPUT_PENDLE_ACTIONS = new Set([
24
+ "add_liquidity",
25
+ "remove_liquidity",
26
+ "mint_py",
27
+ "redeem_py",
28
+ "mint_sy",
29
+ "redeem_sy",
30
+ "roll_over_pt",
31
+ "convert_lp_to_pt",
32
+ ]);
33
+ const MULTI_INPUT_PENDLE_ACTIONS = new Set([
34
+ "add_liquidity_dual",
35
+ "remove_liquidity_dual",
36
+ "transfer_liquidity",
37
+ "exit_market",
38
+ "pendle_swap",
39
+ ]);
40
+ export function createPendleAdapter(config = {}) {
41
+ const baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/, "");
42
+ const fetchFn = config.fetchFn ?? fetch;
43
+ const enableV2Fallback = config.enableV2Fallback ?? true;
44
+ const meta = {
45
+ name: "pendle",
46
+ executionType: "evm",
47
+ supportedChains: config.supportedChains ?? DEFAULT_SUPPORTED_CHAINS,
48
+ actions: [...PENDLE_ACTIONS, "custom"],
49
+ supportedConstraints: ["max_slippage", "min_output", "require_quote", "max_gas"],
50
+ supportsQuote: true,
51
+ supportsSimulation: false,
52
+ supportsPreviewCommit: true,
53
+ dataEndpoints: ["chains", "supported-aggregators", "markets", "assets", "market-tokens"],
54
+ requiredEnv: [
55
+ "KYBERSWAP-API-KEY",
56
+ "ODOS-API-KEY",
57
+ "OKX-ACCESS-KEY",
58
+ "OKX-ACCESS-SECRET",
59
+ "OKX-PASSPHRASE",
60
+ "PARASWAP-API-KEY",
61
+ ],
62
+ description: "Pendle Hosted SDK convert adapter",
63
+ };
64
+ return {
65
+ meta,
66
+ async buildAction(action, ctx) {
67
+ assertSupportedConstraints(meta, action);
68
+ if (!meta.supportedChains.includes(ctx.chainId)) {
69
+ throw new Error(`Pendle adapter is not configured for chain ${ctx.chainId}`);
70
+ }
71
+ if (action.type === "swap" && action.mode === "exact_out") {
72
+ throw new Error("Pendle swap exact_out is not supported in V1");
73
+ }
74
+ if (!isSupportedPendleAction(action)) {
75
+ throw new Error(`Pendle adapter does not support action '${action.type}'`);
76
+ }
77
+ const slippageBps = action.constraints?.maxSlippageBps ?? config.slippageBps ?? DEFAULT_SLIPPAGE_BPS;
78
+ const request = toConvertRequest(action, ctx, config, slippageBps);
79
+ const convert = await requestConvert({
80
+ baseUrl,
81
+ chainId: ctx.chainId,
82
+ request,
83
+ fetchFn,
84
+ enableV2Fallback,
85
+ });
86
+ const warnings = [...convert.warnings];
87
+ const routes = convert.response.routes ?? [];
88
+ if (routes.length === 0) {
89
+ const noRouteMessage = request.enableAggregator
90
+ ? "No Pendle route found for requested inputs/outputs."
91
+ : "No Pendle route without aggregator; set enable_aggregator=true or change inputs.";
92
+ ctx.onWarning?.(noRouteMessage);
93
+ throw new Error(noRouteMessage);
94
+ }
95
+ const route = routes[0];
96
+ if (!route || !route.tx?.to || !route.tx?.data) {
97
+ throw new Error("Pendle convert response did not return a usable tx route");
98
+ }
99
+ const routeOutAmount = toBigIntIfPossible(route.outputs?.[0]?.amount);
100
+ if (action.constraints?.minOutput !== undefined) {
101
+ if (routeOutAmount === undefined) {
102
+ throw new Error("Pendle route did not return output amount required for min_output check");
103
+ }
104
+ if (routeOutAmount < action.constraints.minOutput) {
105
+ throw new Error(`Pendle route output ${routeOutAmount.toString()} is below min_output ${action.constraints.minOutput.toString()}`);
106
+ }
107
+ }
108
+ const txTo = route.tx.to;
109
+ const txData = route.tx.data;
110
+ const txValue = route.tx.value === undefined ? 0n : toBigIntStrict(route.tx.value, "route tx value");
111
+ const approvalTxs = await buildPendleApprovals({
112
+ action,
113
+ ctx,
114
+ requiredApprovals: convert.response.requiredApprovals ?? [],
115
+ defaultSpender: txTo,
116
+ });
117
+ const gasEstimate = await estimateGasIfSupported(ctx, {
118
+ to: txTo,
119
+ data: txData,
120
+ value: txValue,
121
+ });
122
+ if (action.constraints?.maxGas !== undefined) {
123
+ if (!gasEstimate?.gasLimit) {
124
+ throw new Error("Pendle adapter could not estimate gas while max_gas is enabled");
125
+ }
126
+ if (gasEstimate.gasLimit > action.constraints.maxGas) {
127
+ throw new Error(`Pendle gas estimate ${gasEstimate.gasLimit.toString()} exceeds max_gas ${action.constraints.maxGas.toString()}`);
128
+ }
129
+ }
130
+ const expectedIn = sumTokenAmounts(convert.response.inputs);
131
+ const expectedOut = routeOutAmount;
132
+ const minOut = action.constraints?.minOutput ??
133
+ (expectedOut !== undefined ? applyBps(expectedOut, 10_000 - slippageBps) : undefined);
134
+ if (convert.usedV2Fallback) {
135
+ warnings.push("Used /v2/sdk/{chainId}/convert fallback after v3 convert response issue.");
136
+ }
137
+ const mainTx = {
138
+ tx: {
139
+ to: txTo,
140
+ data: txData,
141
+ value: txValue,
142
+ },
143
+ description: `Pendle ${action.type} convert (${request.inputs.length} in -> ${request.outputs.length} out)`,
144
+ gasEstimate,
145
+ action,
146
+ metadata: {
147
+ quote: {
148
+ expectedIn,
149
+ expectedOut,
150
+ minOut,
151
+ slippageBps,
152
+ },
153
+ route: {
154
+ pendleAction: convert.response.action ?? action.type,
155
+ method: route.contractParamInfo?.method,
156
+ aggregatorType: route.data?.aggregatorType,
157
+ priceImpact: route.data?.priceImpact,
158
+ gasEstimate: gasEstimate?.gasLimit,
159
+ },
160
+ fees: route.data?.fee,
161
+ warnings: warnings.length > 0 ? warnings : undefined,
162
+ },
163
+ };
164
+ return [...approvalTxs, mainTx];
165
+ },
166
+ };
167
+ }
168
+ export const pendleAdapter = createPendleAdapter();
169
+ function isSupportedPendleAction(action) {
170
+ if (PENDLE_ACTIONS.includes(action.type)) {
171
+ return true;
172
+ }
173
+ return action.type === "custom" && action.op === "convert";
174
+ }
175
+ function toConvertRequest(action, ctx, config, slippageBps) {
176
+ const defaultReceiver = (ctx.vault ?? ctx.walletAddress);
177
+ if (action.type === "custom") {
178
+ return buildRequestFromCustomConvert(action, ctx.chainId, config, slippageBps, defaultReceiver);
179
+ }
180
+ const options = readPendleOptions(action);
181
+ const receiver = options.receiver ?? defaultReceiver;
182
+ if (action.type === "swap") {
183
+ const tokenIn = resolveAssetAddress(action.assetIn, ctx.chainId, config.tokenMap);
184
+ const tokenOut = resolveAssetAddress(action.assetOut, ctx.chainId, config.tokenMap);
185
+ const amountIn = toBigIntStrict(action.amount, "swap amount");
186
+ return {
187
+ receiver,
188
+ slippage: bpsToDecimal(slippageBps),
189
+ enableAggregator: options.enableAggregator,
190
+ aggregators: options.aggregators,
191
+ needScale: options.needScale,
192
+ redeemRewards: options.redeemRewards,
193
+ additionalData: options.additionalData,
194
+ useLimitOrder: options.useLimitOrder,
195
+ inputs: [{ token: tokenIn, amount: amountIn.toString() }],
196
+ outputs: [tokenOut],
197
+ };
198
+ }
199
+ if (SINGLE_INPUT_PENDLE_ACTIONS.has(action.type)) {
200
+ const single = action;
201
+ const tokenIn = resolveAssetAddress(single.asset, ctx.chainId, config.tokenMap);
202
+ const amountIn = toBigIntStrict(single.amount, `${single.type} amount`);
203
+ const outputs = resolveOutputTokens(single.assetOut, single.outputs, ctx.chainId, config.tokenMap);
204
+ return {
205
+ receiver,
206
+ slippage: bpsToDecimal(slippageBps),
207
+ enableAggregator: options.enableAggregator,
208
+ aggregators: options.aggregators,
209
+ needScale: options.needScale,
210
+ redeemRewards: options.redeemRewards,
211
+ additionalData: options.additionalData,
212
+ useLimitOrder: options.useLimitOrder,
213
+ inputs: [{ token: tokenIn, amount: amountIn.toString() }],
214
+ outputs,
215
+ };
216
+ }
217
+ if (MULTI_INPUT_PENDLE_ACTIONS.has(action.type)) {
218
+ const multi = action;
219
+ const inputs = multi.inputs.map((input, index) => ({
220
+ token: resolveAssetAddress(input.asset, ctx.chainId, config.tokenMap),
221
+ amount: toBigIntStrict(input.amount, `${multi.type} input #${index + 1}`).toString(),
222
+ }));
223
+ const outputs = resolveOutputTokens(undefined, multi.outputs, ctx.chainId, config.tokenMap);
224
+ return {
225
+ receiver,
226
+ slippage: bpsToDecimal(slippageBps),
227
+ enableAggregator: options.enableAggregator,
228
+ aggregators: options.aggregators,
229
+ needScale: options.needScale,
230
+ redeemRewards: options.redeemRewards,
231
+ additionalData: options.additionalData,
232
+ useLimitOrder: options.useLimitOrder,
233
+ inputs,
234
+ outputs,
235
+ };
236
+ }
237
+ throw new Error(`Unsupported Pendle action '${action.type}'`);
238
+ }
239
+ function buildRequestFromCustomConvert(action, chainId, config, slippageBps, defaultReceiver) {
240
+ const tokensInRaw = requireCustomArg(action, "tokens_in");
241
+ const amountsInRaw = requireCustomArg(action, "amounts_in");
242
+ const tokensOutRaw = requireCustomArg(action, "tokens_out");
243
+ const tokensIn = parseStringList(tokensInRaw, "tokens_in");
244
+ const amountsIn = parseBigIntList(amountsInRaw, "amounts_in");
245
+ const tokensOut = parseStringList(tokensOutRaw, "tokens_out");
246
+ if (tokensIn.length !== amountsIn.length) {
247
+ throw new Error("Pendle custom convert requires tokens_in and amounts_in with matching lengths");
248
+ }
249
+ const inputs = tokensIn.map((token, index) => ({
250
+ token: resolveAssetAddress(token, chainId, config.tokenMap),
251
+ amount: (amountsIn[index] ?? 0n).toString(),
252
+ }));
253
+ const outputs = tokensOut.map((token) => resolveAssetAddress(token, chainId, config.tokenMap));
254
+ const receiver = parseOptionalString(action.args.receiver) ?? defaultReceiver;
255
+ const enableAggregator = parseOptionalBoolean(action.args.enable_aggregator) ?? false;
256
+ const aggregators = parseOptionalStringList(action.args.aggregators);
257
+ const needScale = parseOptionalBoolean(action.args.need_scale);
258
+ const redeemRewards = parseOptionalBoolean(action.args.redeem_rewards);
259
+ const additionalData = parseOptionalString(action.args.additional_data);
260
+ const useLimitOrder = parseOptionalBoolean(action.args.use_limit_order);
261
+ return {
262
+ receiver,
263
+ slippage: bpsToDecimal(slippageBps),
264
+ enableAggregator,
265
+ aggregators,
266
+ needScale,
267
+ redeemRewards,
268
+ additionalData,
269
+ useLimitOrder,
270
+ inputs,
271
+ outputs,
272
+ };
273
+ }
274
+ function requireCustomArg(action, key) {
275
+ const value = action.args[key];
276
+ if (value === undefined || value === null) {
277
+ throw new Error(`Pendle custom convert requires '${key}'`);
278
+ }
279
+ return value;
280
+ }
281
+ function readPendleOptions(action) {
282
+ const record = action;
283
+ return {
284
+ receiver: parseOptionalString(record.receiver),
285
+ enableAggregator: parseOptionalBoolean(record.enableAggregator ?? record.enable_aggregator) ?? false,
286
+ aggregators: parseOptionalStringList(record.aggregators),
287
+ needScale: parseOptionalBoolean(record.needScale ?? record.need_scale),
288
+ redeemRewards: parseOptionalBoolean(record.redeemRewards ?? record.redeem_rewards),
289
+ additionalData: parseOptionalString(record.additionalData ?? record.additional_data),
290
+ useLimitOrder: parseOptionalBoolean(record.useLimitOrder ?? record.use_limit_order),
291
+ };
292
+ }
293
+ function resolveOutputTokens(assetOut, outputs, chainId, tokenMap) {
294
+ const outputAssets = outputs && outputs.length > 0 ? outputs : assetOut ? [assetOut] : [];
295
+ if (outputAssets.length === 0) {
296
+ throw new Error("Pendle action requires output token(s) via assetOut or outputs");
297
+ }
298
+ return outputAssets.map((asset) => resolveAssetAddress(asset, chainId, tokenMap));
299
+ }
300
+ function resolveAssetAddress(asset, chainId, tokenMap) {
301
+ if (isAddressLike(asset)) {
302
+ return asset;
303
+ }
304
+ const map = tokenMap?.[chainId];
305
+ if (map) {
306
+ const direct = map[asset] ?? map[asset.toUpperCase()] ?? map[asset.toLowerCase()];
307
+ if (direct)
308
+ return direct;
309
+ }
310
+ return resolveTokenAddress(asset, chainId);
311
+ }
312
+ async function requestConvert(input) {
313
+ const warnings = [];
314
+ try {
315
+ const response = await requestConvertV3(input.baseUrl, input.chainId, input.request, input.fetchFn);
316
+ if ((response.routes ?? []).length > 0 || !input.enableV2Fallback) {
317
+ return { response, warnings, usedV2Fallback: false };
318
+ }
319
+ const fallback = await requestConvertV2(input.baseUrl, input.chainId, input.request, input.fetchFn);
320
+ warnings.push("Pendle v3 convert returned no routes.");
321
+ return { response: fallback, warnings, usedV2Fallback: true };
322
+ }
323
+ catch (error) {
324
+ if (!input.enableV2Fallback) {
325
+ throw error;
326
+ }
327
+ const message = error instanceof Error ? error.message : String(error);
328
+ const fallback = await requestConvertV2(input.baseUrl, input.chainId, input.request, input.fetchFn);
329
+ warnings.push(`Pendle v3 convert failed (${message}).`);
330
+ return { response: fallback, warnings, usedV2Fallback: true };
331
+ }
332
+ }
333
+ async function requestConvertV3(baseUrl, chainId, request, fetchFn) {
334
+ const response = await fetchFn(`${baseUrl}/v3/sdk/${chainId}/convert`, {
335
+ method: "POST",
336
+ headers: {
337
+ "content-type": "application/json",
338
+ },
339
+ body: JSON.stringify(request),
340
+ });
341
+ return await parseJsonResponse(response, `/v3/sdk/${chainId}/convert`);
342
+ }
343
+ async function requestConvertV2(baseUrl, chainId, request, fetchFn) {
344
+ const params = new URLSearchParams();
345
+ if (request.receiver)
346
+ params.set("receiver", request.receiver);
347
+ params.set("slippage", request.slippage.toString());
348
+ params.set("tokensIn", request.inputs.map((input) => input.token).join(","));
349
+ params.set("amountsIn", request.inputs.map((input) => input.amount).join(","));
350
+ params.set("tokensOut", request.outputs.join(","));
351
+ params.set("enableAggregator", request.enableAggregator ? "true" : "false");
352
+ if (request.aggregators && request.aggregators.length > 0) {
353
+ params.set("aggregators", request.aggregators.join(","));
354
+ }
355
+ if (request.redeemRewards !== undefined) {
356
+ params.set("redeemRewards", request.redeemRewards ? "true" : "false");
357
+ }
358
+ if (request.needScale !== undefined) {
359
+ params.set("needScale", request.needScale ? "true" : "false");
360
+ }
361
+ if (request.additionalData) {
362
+ params.set("additionalData", request.additionalData);
363
+ }
364
+ if (request.useLimitOrder !== undefined) {
365
+ params.set("useLimitOrder", request.useLimitOrder ? "true" : "false");
366
+ }
367
+ const response = await fetchFn(`${baseUrl}/v2/sdk/${chainId}/convert?${params.toString()}`, {
368
+ method: "GET",
369
+ });
370
+ return await parseJsonResponse(response, `/v2/sdk/${chainId}/convert`);
371
+ }
372
+ async function parseJsonResponse(response, endpoint) {
373
+ const text = await response.text();
374
+ let payload;
375
+ try {
376
+ payload = text.length > 0 ? JSON.parse(text) : {};
377
+ }
378
+ catch {
379
+ throw new Error(`Pendle API ${endpoint} returned non-JSON response`);
380
+ }
381
+ if (!response.ok) {
382
+ const details = payload && typeof payload === "object" && "message" in payload
383
+ ? String(payload.message)
384
+ : text;
385
+ throw new Error(`Pendle API ${endpoint} failed (${response.status}): ${details}`);
386
+ }
387
+ return payload;
388
+ }
389
+ async function buildPendleApprovals(input) {
390
+ const approvalsByToken = new Map();
391
+ const spenderByToken = new Map();
392
+ for (const approval of input.requiredApprovals) {
393
+ if (!approval?.token || !approval?.amount)
394
+ continue;
395
+ const token = approval.token.toLowerCase();
396
+ const amount = toBigIntIfPossible(approval.amount) ?? 0n;
397
+ if (amount <= 0n)
398
+ continue;
399
+ const current = approvalsByToken.get(token) ?? 0n;
400
+ if (amount > current) {
401
+ approvalsByToken.set(token, amount);
402
+ }
403
+ const spenderRaw = approval.spender;
404
+ const spender = spenderRaw && isAddressLike(spenderRaw) ? spenderRaw : input.defaultSpender;
405
+ spenderByToken.set(token, spender);
406
+ }
407
+ const approvalTxs = [];
408
+ for (const [token, amount] of approvalsByToken.entries()) {
409
+ const spender = spenderByToken.get(token) ?? input.defaultSpender;
410
+ const txs = await buildApprovalIfNeeded({
411
+ ctx: input.ctx,
412
+ token: token,
413
+ spender,
414
+ amount,
415
+ action: input.action,
416
+ description: `Approve ${token} for Pendle convert`,
417
+ });
418
+ approvalTxs.push(...txs);
419
+ }
420
+ return approvalTxs;
421
+ }
422
+ function sumTokenAmounts(items) {
423
+ if (!items || items.length === 0) {
424
+ return undefined;
425
+ }
426
+ let total = 0n;
427
+ let hasValue = false;
428
+ for (const item of items) {
429
+ const value = toBigIntIfPossible(item.amount);
430
+ if (value === undefined)
431
+ continue;
432
+ total += value;
433
+ hasValue = true;
434
+ }
435
+ return hasValue ? total : undefined;
436
+ }
437
+ function parseStringList(value, field) {
438
+ const list = parseOptionalStringList(value);
439
+ if (!list || list.length === 0) {
440
+ throw new Error(`Pendle custom convert requires '${field}'`);
441
+ }
442
+ return list;
443
+ }
444
+ function parseBigIntList(value, field) {
445
+ if (Array.isArray(value)) {
446
+ return value.map((entry, index) => toBigIntStrict(entry, `${field}[${index}]`));
447
+ }
448
+ if (typeof value === "string") {
449
+ return value
450
+ .split(",")
451
+ .map((entry) => entry.trim())
452
+ .filter((entry) => entry.length > 0)
453
+ .map((entry, index) => toBigIntStrict(entry, `${field}[${index}]`));
454
+ }
455
+ return [toBigIntStrict(value, field)];
456
+ }
457
+ function parseOptionalString(value) {
458
+ if (typeof value !== "string")
459
+ return undefined;
460
+ const trimmed = value.trim();
461
+ return trimmed.length > 0 ? trimmed : undefined;
462
+ }
463
+ function parseOptionalStringList(value) {
464
+ if (Array.isArray(value)) {
465
+ const items = value
466
+ .map((entry) => (typeof entry === "string" ? entry.trim() : String(entry)))
467
+ .map((entry) => entry.trim())
468
+ .filter((entry) => entry.length > 0);
469
+ return items.length > 0 ? items : undefined;
470
+ }
471
+ if (typeof value === "string") {
472
+ const items = value
473
+ .split(",")
474
+ .map((entry) => entry.trim())
475
+ .filter((entry) => entry.length > 0);
476
+ return items.length > 0 ? items : undefined;
477
+ }
478
+ return undefined;
479
+ }
480
+ function parseOptionalBoolean(value) {
481
+ if (typeof value === "boolean")
482
+ return value;
483
+ if (typeof value === "string") {
484
+ if (value === "true")
485
+ return true;
486
+ if (value === "false")
487
+ return false;
488
+ }
489
+ return undefined;
490
+ }
491
+ function bpsToDecimal(bps) {
492
+ return bps / 10_000;
493
+ }
494
+ function toBigIntStrict(value, label) {
495
+ const parsed = toBigIntIfPossible(value);
496
+ if (parsed === undefined) {
497
+ throw new Error(`Pendle adapter requires numeric value for ${label}`);
498
+ }
499
+ return parsed;
500
+ }
501
+ function toBigIntIfPossible(value) {
502
+ if (typeof value === "bigint")
503
+ return value;
504
+ if (typeof value === "number") {
505
+ if (!Number.isFinite(value))
506
+ return undefined;
507
+ return BigInt(Math.floor(value));
508
+ }
509
+ if (typeof value === "string") {
510
+ const trimmed = value.trim();
511
+ if (!trimmed)
512
+ return undefined;
513
+ try {
514
+ return BigInt(trimmed);
515
+ }
516
+ catch {
517
+ return undefined;
518
+ }
519
+ }
520
+ if (value && typeof value === "object" && "kind" in value && "value" in value) {
521
+ const literal = value;
522
+ if (literal.kind === "literal") {
523
+ return toBigIntIfPossible(literal.value);
524
+ }
525
+ }
526
+ return undefined;
527
+ }
528
+ function applyBps(amount, bps) {
529
+ return (amount * BigInt(bps)) / 10000n;
530
+ }
531
+ async function estimateGasIfSupported(ctx, tx) {
532
+ if (typeof ctx.provider.getGasEstimate !== "function") {
533
+ return undefined;
534
+ }
535
+ try {
536
+ return await ctx.provider.getGasEstimate({
537
+ ...tx,
538
+ from: ctx.walletAddress,
539
+ });
540
+ }
541
+ catch {
542
+ return undefined;
543
+ }
544
+ }
545
+ //# sourceMappingURL=pendle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pendle.js","sourceRoot":"","sources":["../src/pendle.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grimoirelabs/venues",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Official Grimoire venue adapters",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,7 +12,8 @@
12
12
  "grimoire-aave": "dist/cli/aave.js",
13
13
  "grimoire-uniswap": "dist/cli/uniswap.js",
14
14
  "grimoire-morpho-blue": "dist/cli/morpho-blue.js",
15
- "grimoire-hyperliquid": "dist/cli/hyperliquid.js"
15
+ "grimoire-hyperliquid": "dist/cli/hyperliquid.js",
16
+ "grimoire-pendle": "dist/cli/pendle.js"
16
17
  },
17
18
  "repository": {
18
19
  "type": "git",
@@ -25,7 +26,7 @@
25
26
  "dependencies": {
26
27
  "@aave/client": "^0.7.0",
27
28
  "@across-protocol/app-sdk": "^0.4.4",
28
- "@grimoirelabs/core": "0.11.0",
29
+ "@grimoirelabs/core": "0.12.0",
29
30
  "@morpho-org/blue-sdk": "^2.0.0",
30
31
  "@morpho-org/blue-sdk-viem": "^2.0.0",
31
32
  "@nktkas/hyperliquid": "^0.30.3",