@solana-compass/cli 0.1.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.
Files changed (120) hide show
  1. package/README.md +327 -0
  2. package/bin/sol.mjs +6 -0
  3. package/dist/commands/config.d.ts +2 -0
  4. package/dist/commands/config.js +73 -0
  5. package/dist/commands/config.js.map +1 -0
  6. package/dist/commands/lend.d.ts +2 -0
  7. package/dist/commands/lend.js +262 -0
  8. package/dist/commands/lend.js.map +1 -0
  9. package/dist/commands/lp.d.ts +2 -0
  10. package/dist/commands/lp.js +158 -0
  11. package/dist/commands/lp.js.map +1 -0
  12. package/dist/commands/network.d.ts +2 -0
  13. package/dist/commands/network.js +126 -0
  14. package/dist/commands/network.js.map +1 -0
  15. package/dist/commands/portfolio.d.ts +2 -0
  16. package/dist/commands/portfolio.js +187 -0
  17. package/dist/commands/portfolio.js.map +1 -0
  18. package/dist/commands/stake.d.ts +2 -0
  19. package/dist/commands/stake.js +143 -0
  20. package/dist/commands/stake.js.map +1 -0
  21. package/dist/commands/token.d.ts +2 -0
  22. package/dist/commands/token.js +551 -0
  23. package/dist/commands/token.js.map +1 -0
  24. package/dist/commands/tx.d.ts +2 -0
  25. package/dist/commands/tx.js +131 -0
  26. package/dist/commands/tx.js.map +1 -0
  27. package/dist/commands/wallet.d.ts +2 -0
  28. package/dist/commands/wallet.js +403 -0
  29. package/dist/commands/wallet.js.map +1 -0
  30. package/dist/core/config-manager.d.ts +31 -0
  31. package/dist/core/config-manager.js +79 -0
  32. package/dist/core/config-manager.js.map +1 -0
  33. package/dist/core/kamino-compat.d.ts +17 -0
  34. package/dist/core/kamino-compat.js +38 -0
  35. package/dist/core/kamino-compat.js.map +1 -0
  36. package/dist/core/lend-service.d.ts +41 -0
  37. package/dist/core/lend-service.js +331 -0
  38. package/dist/core/lend-service.js.map +1 -0
  39. package/dist/core/lp-service.d.ts +30 -0
  40. package/dist/core/lp-service.js +21 -0
  41. package/dist/core/lp-service.js.map +1 -0
  42. package/dist/core/onramp-service.d.ts +15 -0
  43. package/dist/core/onramp-service.js +57 -0
  44. package/dist/core/onramp-service.js.map +1 -0
  45. package/dist/core/portfolio-service.d.ts +55 -0
  46. package/dist/core/portfolio-service.js +272 -0
  47. package/dist/core/portfolio-service.js.map +1 -0
  48. package/dist/core/price-service.d.ts +8 -0
  49. package/dist/core/price-service.js +116 -0
  50. package/dist/core/price-service.js.map +1 -0
  51. package/dist/core/rpc.d.ts +5 -0
  52. package/dist/core/rpc.js +69 -0
  53. package/dist/core/rpc.js.map +1 -0
  54. package/dist/core/stake-service.d.ts +42 -0
  55. package/dist/core/stake-service.js +319 -0
  56. package/dist/core/stake-service.js.map +1 -0
  57. package/dist/core/swap-service.d.ts +31 -0
  58. package/dist/core/swap-service.js +142 -0
  59. package/dist/core/swap-service.js.map +1 -0
  60. package/dist/core/token-registry.d.ts +23 -0
  61. package/dist/core/token-registry.js +174 -0
  62. package/dist/core/token-registry.js.map +1 -0
  63. package/dist/core/token-service.d.ts +20 -0
  64. package/dist/core/token-service.js +92 -0
  65. package/dist/core/token-service.js.map +1 -0
  66. package/dist/core/transaction.d.ts +55 -0
  67. package/dist/core/transaction.js +196 -0
  68. package/dist/core/transaction.js.map +1 -0
  69. package/dist/core/wallet-manager.d.ts +20 -0
  70. package/dist/core/wallet-manager.js +142 -0
  71. package/dist/core/wallet-manager.js.map +1 -0
  72. package/dist/db/database.d.ts +3 -0
  73. package/dist/db/database.js +44 -0
  74. package/dist/db/database.js.map +1 -0
  75. package/dist/db/migrations/001_initial.d.ts +1 -0
  76. package/dist/db/migrations/001_initial.js +116 -0
  77. package/dist/db/migrations/001_initial.js.map +1 -0
  78. package/dist/db/migrations/002_tx_prices.d.ts +1 -0
  79. package/dist/db/migrations/002_tx_prices.js +5 -0
  80. package/dist/db/migrations/002_tx_prices.js.map +1 -0
  81. package/dist/db/repos/price-repo.d.ts +11 -0
  82. package/dist/db/repos/price-repo.js +14 -0
  83. package/dist/db/repos/price-repo.js.map +1 -0
  84. package/dist/db/repos/snapshot-repo.d.ts +27 -0
  85. package/dist/db/repos/snapshot-repo.js +32 -0
  86. package/dist/db/repos/snapshot-repo.js.map +1 -0
  87. package/dist/db/repos/token-repo.d.ts +17 -0
  88. package/dist/db/repos/token-repo.js +53 -0
  89. package/dist/db/repos/token-repo.js.map +1 -0
  90. package/dist/db/repos/transaction-repo.d.ts +22 -0
  91. package/dist/db/repos/transaction-repo.js +28 -0
  92. package/dist/db/repos/transaction-repo.js.map +1 -0
  93. package/dist/db/repos/wallet-repo.d.ts +18 -0
  94. package/dist/db/repos/wallet-repo.js +44 -0
  95. package/dist/db/repos/wallet-repo.js.map +1 -0
  96. package/dist/index.d.ts +1 -0
  97. package/dist/index.js +84 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/output/formatter.d.ts +27 -0
  100. package/dist/output/formatter.js +76 -0
  101. package/dist/output/formatter.js.map +1 -0
  102. package/dist/output/portfolio-renderer.d.ts +3 -0
  103. package/dist/output/portfolio-renderer.js +205 -0
  104. package/dist/output/portfolio-renderer.js.map +1 -0
  105. package/dist/output/table.d.ts +8 -0
  106. package/dist/output/table.js +22 -0
  107. package/dist/output/table.js.map +1 -0
  108. package/dist/utils/fs.d.ts +7 -0
  109. package/dist/utils/fs.js +39 -0
  110. package/dist/utils/fs.js.map +1 -0
  111. package/dist/utils/retry.d.ts +17 -0
  112. package/dist/utils/retry.js +55 -0
  113. package/dist/utils/retry.js.map +1 -0
  114. package/dist/utils/solana.d.ts +9 -0
  115. package/dist/utils/solana.js +26 -0
  116. package/dist/utils/solana.js.map +1 -0
  117. package/dist/utils/token-list.d.ts +9 -0
  118. package/dist/utils/token-list.js +31 -0
  119. package/dist/utils/token-list.js.map +1 -0
  120. package/package.json +44 -0
@@ -0,0 +1,26 @@
1
+ const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
2
+ const BASE58_RE = /^[1-9A-HJ-NP-Za-km-z]{32,44}$/;
3
+ export function isValidAddress(address) {
4
+ return BASE58_RE.test(address);
5
+ }
6
+ export function lamportsToSol(lamports) {
7
+ return Number(BigInt(lamports)) / 1e9;
8
+ }
9
+ export function solToLamports(sol) {
10
+ return BigInt(Math.round(sol * 1e9));
11
+ }
12
+ export function tokenAmountToUi(rawAmount, decimals) {
13
+ return Number(BigInt(rawAmount)) / Math.pow(10, decimals);
14
+ }
15
+ export function uiToTokenAmount(uiAmount, decimals) {
16
+ return BigInt(Math.round(uiAmount * Math.pow(10, decimals)));
17
+ }
18
+ export function shortenAddress(address, chars = 4) {
19
+ return `${address.slice(0, chars)}...${address.slice(-chars)}`;
20
+ }
21
+ export function explorerUrl(signature, type = 'tx') {
22
+ return `https://solscan.io/${type}/${signature}`;
23
+ }
24
+ export const SOL_MINT = 'So11111111111111111111111111111111111111112';
25
+ export const SOL_DECIMALS = 9;
26
+ //# sourceMappingURL=solana.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../src/utils/solana.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,4DAA4D,CAAC;AACrF,MAAM,SAAS,GAAG,+BAA+B,CAAC;AAElD,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAyB;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAA0B,EAAE,QAAgB;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,QAAgB;IAChE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,KAAK,GAAG,CAAC;IACvD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,OAAyB,IAAI;IAC1E,OAAO,sBAAsB,IAAI,IAAI,SAAS,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,6CAA6C,CAAC;AACtE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface WellKnownToken {
2
+ mint: string;
3
+ symbol: string;
4
+ name: string;
5
+ decimals: number;
6
+ }
7
+ export declare const WELL_KNOWN_TOKENS: WellKnownToken[];
8
+ export declare function getWellKnownBySymbol(symbol: string): WellKnownToken | undefined;
9
+ export declare function getWellKnownByMint(mint: string): WellKnownToken | undefined;
@@ -0,0 +1,31 @@
1
+ // Hardcoded well-known tokens for instant offline resolution
2
+ export const WELL_KNOWN_TOKENS = [
3
+ { mint: 'So11111111111111111111111111111111111111112', symbol: 'SOL', name: 'Solana', decimals: 9 },
4
+ { mint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', symbol: 'USDC', name: 'USD Coin', decimals: 6 },
5
+ { mint: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', symbol: 'USDT', name: 'Tether USD', decimals: 6 },
6
+ { mint: 'JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN', symbol: 'JUP', name: 'Jupiter', decimals: 6 },
7
+ { mint: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', symbol: 'BONK', name: 'Bonk', decimals: 5 },
8
+ { mint: 'mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', symbol: 'mSOL', name: 'Marinade Staked SOL', decimals: 9 },
9
+ { mint: 'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn', symbol: 'jitoSOL', name: 'Jito Staked SOL', decimals: 9 },
10
+ { mint: 'bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1', symbol: 'bSOL', name: 'BlazeStake Staked SOL', decimals: 9 },
11
+ { mint: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs', symbol: 'ETH', name: 'Wrapped Ether (Wormhole)', decimals: 8 },
12
+ { mint: '3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh', symbol: 'wBTC', name: 'Wrapped BTC (Wormhole)', decimals: 8 },
13
+ { mint: 'HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3', symbol: 'PYTH', name: 'Pyth Network', decimals: 6 },
14
+ { mint: 'jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL', symbol: 'JTO', name: 'Jito', decimals: 9 },
15
+ { mint: 'WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk', symbol: 'WEN', name: 'Wen', decimals: 5 },
16
+ { mint: 'rndrizKT3MK1iimdxRdWabcF7Zg7AR5T4nud4EkHBof', symbol: 'RNDR', name: 'Render Token', decimals: 8 },
17
+ { mint: '27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4', symbol: 'JLP', name: 'Jupiter Perps LP', decimals: 6 },
18
+ ];
19
+ const BY_SYMBOL = new Map();
20
+ const BY_MINT = new Map();
21
+ for (const token of WELL_KNOWN_TOKENS) {
22
+ BY_SYMBOL.set(token.symbol.toUpperCase(), token);
23
+ BY_MINT.set(token.mint, token);
24
+ }
25
+ export function getWellKnownBySymbol(symbol) {
26
+ return BY_SYMBOL.get(symbol.toUpperCase());
27
+ }
28
+ export function getWellKnownByMint(mint) {
29
+ return BY_MINT.get(mint);
30
+ }
31
+ //# sourceMappingURL=token-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-list.js","sourceRoot":"","sources":["../../src/utils/token-list.ts"],"names":[],"mappings":"AAOA,6DAA6D;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAqB;IACjD,EAAE,IAAI,EAAE,6CAA6C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE;IACnG,EAAE,IAAI,EAAE,8CAA8C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;IACvG,EAAE,IAAI,EAAE,8CAA8C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE;IACzG,EAAE,IAAI,EAAE,6CAA6C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IACpG,EAAE,IAAI,EAAE,8CAA8C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE;IACnG,EAAE,IAAI,EAAE,6CAA6C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC,EAAE;IACjH,EAAE,IAAI,EAAE,8CAA8C,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,EAAE;IACjH,EAAE,IAAI,EAAE,6CAA6C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,EAAE;IACnH,EAAE,IAAI,EAAE,8CAA8C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,EAAE,QAAQ,EAAE,CAAC,EAAE;IACtH,EAAE,IAAI,EAAE,8CAA8C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,CAAC,EAAE;IACrH,EAAE,IAAI,EAAE,8CAA8C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC3G,EAAE,IAAI,EAAE,6CAA6C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE;IACjG,EAAE,IAAI,EAAE,6CAA6C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;IAChG,EAAE,IAAI,EAAE,6CAA6C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC1G,EAAE,IAAI,EAAE,8CAA8C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE;CAC/G,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;AACpD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;AAElD,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;IACtC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@solana-compass/cli",
3
+ "version": "0.1.0",
4
+ "description": "Solana CLI for Humans and LLM Agents",
5
+ "type": "module",
6
+ "bin": {
7
+ "sol": "./bin/sol.mjs"
8
+ },
9
+ "scripts": {
10
+ "dev": "tsx src/index.ts",
11
+ "build": "tsc",
12
+ "prepublishOnly": "npm run build",
13
+ "test": "node --import tsx --test tests/**/*.test.ts"
14
+ },
15
+ "dependencies": {
16
+ "@kamino-finance/klend-sdk": "^7.3.19",
17
+ "@solana-program/stake": "0.2.1",
18
+ "@solana-program/system": "^0.7.0",
19
+ "@solana-program/token": "^0.5.0",
20
+ "@solana/kit": "^2.1.0",
21
+ "@solana/web3.js": "^1.98.4",
22
+ "better-sqlite3": "^11.0.0",
23
+ "commander": "^14.0.0",
24
+ "smol-toml": "^1.3.1"
25
+ },
26
+ "devDependencies": {
27
+ "@types/better-sqlite3": "^7.6.0",
28
+ "@types/node": "^22.0.0",
29
+ "tsx": "^4.19.0",
30
+ "typescript": "^5.7.0"
31
+ },
32
+ "engines": {
33
+ "node": ">=20"
34
+ },
35
+ "files": [
36
+ "bin/",
37
+ "dist/"
38
+ ],
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/solanaguide/solana-cli.git"
42
+ },
43
+ "license": "MIT"
44
+ }