torch-liquidation-bot 2.0.5 → 2.0.6

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,8 @@
1
+ /**
2
+ * config.ts — loads environment variables into a typed ReadOnlyConfig.
3
+ *
4
+ * no wallet loaded, no keypair decoded, no signing possible.
5
+ */
6
+ import type { ReadOnlyConfig } from './types';
7
+ export declare function loadReadOnlyConfig(): ReadOnlyConfig;
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,SAAS,CAAA;AAIvD,wBAAgB,kBAAkB,IAAI,cAAc,CAUnD"}
package/dist/config.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * config.ts — loads environment variables into a typed ReadOnlyConfig.
4
+ *
5
+ * no wallet loaded, no keypair decoded, no signing possible.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.loadReadOnlyConfig = loadReadOnlyConfig;
9
+ const LOG_LEVELS = ['debug', 'info', 'warn', 'error'];
10
+ function loadReadOnlyConfig() {
11
+ const rpcUrl = process.env.RPC_URL;
12
+ if (!rpcUrl)
13
+ throw new Error('RPC_URL env var is required');
14
+ const logLevel = (process.env.LOG_LEVEL ?? 'info');
15
+ if (!LOG_LEVELS.includes(logLevel)) {
16
+ throw new Error(`LOG_LEVEL must be one of: ${LOG_LEVELS.join(', ')}`);
17
+ }
18
+ return { rpcUrl, logLevel };
19
+ }
20
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAMH,gDAUC;AAZD,MAAM,UAAU,GAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAEjE,SAAgB,kBAAkB;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAA;IAClC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAE3D,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAa,CAAA;IAC9D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,6BAA6B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * torch-lending-monitor — read-only lending market scanner.
4
+ *
5
+ * displays lending parameters for tokens on Torch Market.
6
+ * no wallet required. no signing. no state changes.
7
+ *
8
+ * usage:
9
+ * # show all migrated tokens with lending
10
+ * RPC_URL=<rpc> npx tsx src/index.ts
11
+ *
12
+ * # show lending info for one token
13
+ * MINT=<mint> RPC_URL=<rpc> npx tsx src/index.ts
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG"}
package/dist/index.js ADDED
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * torch-lending-monitor — read-only lending market scanner.
5
+ *
6
+ * displays lending parameters for tokens on Torch Market.
7
+ * no wallet required. no signing. no state changes.
8
+ *
9
+ * usage:
10
+ * # show all migrated tokens with lending
11
+ * RPC_URL=<rpc> npx tsx src/index.ts
12
+ *
13
+ * # show lending info for one token
14
+ * MINT=<mint> RPC_URL=<rpc> npx tsx src/index.ts
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const web3_js_1 = require("@solana/web3.js");
18
+ const torchsdk_1 = require("torchsdk");
19
+ const config_1 = require("./config");
20
+ const utils_1 = require("./utils");
21
+ // ---------------------------------------------------------------------------
22
+ // read-only info display
23
+ // ---------------------------------------------------------------------------
24
+ async function showLendingInfo(connection, mint) {
25
+ const token = await (0, torchsdk_1.getToken)(connection, mint);
26
+ const lending = await (0, torchsdk_1.getLendingInfo)(connection, mint);
27
+ console.log(`\n=== lending info: ${token.name} (${token.symbol}) ===`);
28
+ console.log(`status: ${token.status}`);
29
+ console.log(`token price: ${(0, utils_1.sol)(token.price_sol)} SOL`);
30
+ console.log(`interest rate: ${(0, utils_1.bpsToPercent)(lending.interest_rate_bps)}`);
31
+ console.log(`max LTV: ${(0, utils_1.bpsToPercent)(lending.max_ltv_bps)}`);
32
+ console.log(`liquidation threshold: ${(0, utils_1.bpsToPercent)(lending.liquidation_threshold_bps)}`);
33
+ console.log(`liquidation bonus: ${(0, utils_1.bpsToPercent)(lending.liquidation_bonus_bps)}`);
34
+ console.log(`treasury SOL avail: ${(0, utils_1.sol)(lending.treasury_sol_available)} SOL`);
35
+ console.log(`total SOL lent: ${lending.total_sol_lent ? (0, utils_1.sol)(lending.total_sol_lent) : (0, utils_1.sol)(0)} SOL`);
36
+ console.log(`active loans: ${lending.active_loans}`);
37
+ }
38
+ async function showAllLending(connection) {
39
+ console.log('=== torch lending monitor ===\n');
40
+ console.log('no MINT specified — showing all migrated tokens with lending\n');
41
+ const { tokens } = await (0, torchsdk_1.getTokens)(connection, {
42
+ status: 'migrated',
43
+ sort: 'volume',
44
+ limit: 10,
45
+ });
46
+ for (const t of tokens) {
47
+ try {
48
+ const lending = await (0, torchsdk_1.getLendingInfo)(connection, t.mint);
49
+ console.log(`${t.symbol.padEnd(10)} | ` +
50
+ `rate: ${(0, utils_1.bpsToPercent)(lending.interest_rate_bps).padEnd(7)} | ` +
51
+ `loans: ${String(lending.active_loans).padEnd(4)} | ` +
52
+ `avail: ${(0, utils_1.sol)(lending.treasury_sol_available)} SOL`);
53
+ }
54
+ catch {
55
+ // token may not have lending enabled yet
56
+ }
57
+ }
58
+ }
59
+ // ---------------------------------------------------------------------------
60
+ // main — read-only only
61
+ // ---------------------------------------------------------------------------
62
+ async function main() {
63
+ const config = (0, config_1.loadReadOnlyConfig)();
64
+ const connection = new web3_js_1.Connection(config.rpcUrl, 'confirmed');
65
+ const MINT = process.env.MINT;
66
+ if (MINT) {
67
+ await showLendingInfo(connection, MINT);
68
+ }
69
+ else {
70
+ await showAllLending(connection);
71
+ }
72
+ }
73
+ main();
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * types.ts — interfaces for the read-only lending scanner.
3
+ */
4
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
5
+ export interface ReadOnlyConfig {
6
+ rpcUrl: string;
7
+ logLevel: LogLevel;
8
+ }
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,QAAQ,CAAA;CACnB"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * types.ts — interfaces for the read-only lending scanner.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * utils.ts — shared helpers.
3
+ */
4
+ export declare function sol(lamports: number): string;
5
+ export declare function bpsToPercent(bps: number): string;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD"}
package/dist/utils.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * utils.ts — shared helpers.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sol = sol;
7
+ exports.bpsToPercent = bpsToPercent;
8
+ const torchsdk_1 = require("torchsdk");
9
+ function sol(lamports) {
10
+ return (lamports / torchsdk_1.LAMPORTS_PER_SOL).toFixed(4);
11
+ }
12
+ function bpsToPercent(bps) {
13
+ return (bps / 100).toFixed(2) + '%';
14
+ }
15
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,kBAEC;AAED,oCAEC;AARD,uCAA2C;AAE3C,SAAgB,GAAG,CAAC,QAAgB;IAClC,OAAO,CAAC,QAAQ,GAAG,2BAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;AACrC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "torch-liquidation-bot",
3
- "version": "2.0.5",
3
+ "version": "2.0.6",
4
4
  "description": "read-only lending market scanner for Torch Market on Solana",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,13 +17,13 @@
17
17
  "format": "prettier --write src/ tests/"
18
18
  },
19
19
  "dependencies": {
20
- "@solana/web3.js": "^1.98.4",
21
- "torchsdk": "^1.0.5"
20
+ "@solana/web3.js": "1.98.4",
21
+ "torchsdk": "1.0.7"
22
22
  },
23
23
  "devDependencies": {
24
- "@types/node": "^20",
25
- "prettier": "^3.5.3",
26
- "typescript": "^5"
24
+ "@types/node": "20.19.33",
25
+ "prettier": "3.8.1",
26
+ "typescript": "5.9.3"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@solana/web3.js": "^1.98.0"