forgex-cli 1.0.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.
- package/README.md +479 -0
- package/dist/bin/forgex.d.ts +12 -0
- package/dist/bin/forgex.d.ts.map +1 -0
- package/dist/bin/forgex.js +23 -0
- package/dist/bin/forgex.js.map +1 -0
- package/dist/src/adapters/codex-adapter.d.ts +238 -0
- package/dist/src/adapters/codex-adapter.d.ts.map +1 -0
- package/dist/src/adapters/codex-adapter.js +524 -0
- package/dist/src/adapters/codex-adapter.js.map +1 -0
- package/dist/src/adapters/connection.d.ts +20 -0
- package/dist/src/adapters/connection.d.ts.map +1 -0
- package/dist/src/adapters/connection.js +43 -0
- package/dist/src/adapters/connection.js.map +1 -0
- package/dist/src/adapters/ipfs.d.ts +17 -0
- package/dist/src/adapters/ipfs.d.ts.map +1 -0
- package/dist/src/adapters/ipfs.js +30 -0
- package/dist/src/adapters/ipfs.js.map +1 -0
- package/dist/src/adapters/jito-adapter.d.ts +194 -0
- package/dist/src/adapters/jito-adapter.d.ts.map +1 -0
- package/dist/src/adapters/jito-adapter.js +474 -0
- package/dist/src/adapters/jito-adapter.js.map +1 -0
- package/dist/src/adapters/rpc-adapter.d.ts +148 -0
- package/dist/src/adapters/rpc-adapter.d.ts.map +1 -0
- package/dist/src/adapters/rpc-adapter.js +410 -0
- package/dist/src/adapters/rpc-adapter.js.map +1 -0
- package/dist/src/adapters/sdk-adapter.d.ts +148 -0
- package/dist/src/adapters/sdk-adapter.d.ts.map +1 -0
- package/dist/src/adapters/sdk-adapter.js +554 -0
- package/dist/src/adapters/sdk-adapter.js.map +1 -0
- package/dist/src/commands/config/index.d.ts +8 -0
- package/dist/src/commands/config/index.d.ts.map +1 -0
- package/dist/src/commands/config/index.js +91 -0
- package/dist/src/commands/config/index.js.map +1 -0
- package/dist/src/commands/query/index.d.ts +10 -0
- package/dist/src/commands/query/index.d.ts.map +1 -0
- package/dist/src/commands/query/index.js +376 -0
- package/dist/src/commands/query/index.js.map +1 -0
- package/dist/src/commands/sniper/index.d.ts +16 -0
- package/dist/src/commands/sniper/index.d.ts.map +1 -0
- package/dist/src/commands/sniper/index.js +292 -0
- package/dist/src/commands/sniper/index.js.map +1 -0
- package/dist/src/commands/token/index.d.ts +16 -0
- package/dist/src/commands/token/index.d.ts.map +1 -0
- package/dist/src/commands/token/index.js +295 -0
- package/dist/src/commands/token/index.js.map +1 -0
- package/dist/src/commands/tools/index.d.ts +17 -0
- package/dist/src/commands/tools/index.d.ts.map +1 -0
- package/dist/src/commands/tools/index.js +626 -0
- package/dist/src/commands/tools/index.js.map +1 -0
- package/dist/src/commands/trade/index.d.ts +8 -0
- package/dist/src/commands/trade/index.d.ts.map +1 -0
- package/dist/src/commands/trade/index.js +531 -0
- package/dist/src/commands/trade/index.js.map +1 -0
- package/dist/src/commands/transfer/index.d.ts +16 -0
- package/dist/src/commands/transfer/index.d.ts.map +1 -0
- package/dist/src/commands/transfer/index.js +509 -0
- package/dist/src/commands/transfer/index.js.map +1 -0
- package/dist/src/commands/wallet/index.d.ts +10 -0
- package/dist/src/commands/wallet/index.d.ts.map +1 -0
- package/dist/src/commands/wallet/index.js +828 -0
- package/dist/src/commands/wallet/index.js.map +1 -0
- package/dist/src/config.d.ts +74 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +190 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/const/IDL/index.d.ts +4 -0
- package/dist/src/const/IDL/index.d.ts.map +1 -0
- package/dist/src/const/IDL/index.js +2 -0
- package/dist/src/const/IDL/index.js.map +1 -0
- package/dist/src/const/IDL/meteora-DLMM.d.ts +10249 -0
- package/dist/src/const/IDL/meteora-DLMM.d.ts.map +1 -0
- package/dist/src/const/IDL/meteora-DLMM.js +4177 -0
- package/dist/src/const/IDL/meteora-DLMM.js.map +1 -0
- package/dist/src/const/IDL/pump-fun.d.ts +4811 -0
- package/dist/src/const/IDL/pump-fun.d.ts.map +1 -0
- package/dist/src/const/IDL/pump-fun.js +2954 -0
- package/dist/src/const/IDL/pump-fun.js.map +1 -0
- package/dist/src/const/IDL/pump-swap-IDL.d.ts +3119 -0
- package/dist/src/const/IDL/pump-swap-IDL.d.ts.map +1 -0
- package/dist/src/const/IDL/pump-swap-IDL.js +2095 -0
- package/dist/src/const/IDL/pump-swap-IDL.js.map +1 -0
- package/dist/src/const/IDL/raydium-launchlab-IDL.d.ts +4031 -0
- package/dist/src/const/IDL/raydium-launchlab-IDL.d.ts.map +1 -0
- package/dist/src/const/IDL/raydium-launchlab-IDL.js +2110 -0
- package/dist/src/const/IDL/raydium-launchlab-IDL.js.map +1 -0
- package/dist/src/const/index.d.ts +40 -0
- package/dist/src/const/index.d.ts.map +1 -0
- package/dist/src/const/index.js +57 -0
- package/dist/src/const/index.js.map +1 -0
- package/dist/src/data-source.d.ts +270 -0
- package/dist/src/data-source.d.ts.map +1 -0
- package/dist/src/data-source.js +628 -0
- package/dist/src/data-source.js.map +1 -0
- package/dist/src/data-store/index.d.ts +87 -0
- package/dist/src/data-store/index.d.ts.map +1 -0
- package/dist/src/data-store/index.js +561 -0
- package/dist/src/data-store/index.js.map +1 -0
- package/dist/src/data-store/types.d.ts +91 -0
- package/dist/src/data-store/types.d.ts.map +1 -0
- package/dist/src/data-store/types.js +8 -0
- package/dist/src/data-store/types.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +36 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/output.d.ts +52 -0
- package/dist/src/output.d.ts.map +1 -0
- package/dist/src/output.js +218 -0
- package/dist/src/output.js.map +1 -0
- package/dist/src/shims/store.d.ts +58 -0
- package/dist/src/shims/store.d.ts.map +1 -0
- package/dist/src/shims/store.js +55 -0
- package/dist/src/shims/store.js.map +1 -0
- package/dist/src/sol-sdk/account/index.d.ts +13 -0
- package/dist/src/sol-sdk/account/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/account/index.js +174 -0
- package/dist/src/sol-sdk/account/index.js.map +1 -0
- package/dist/src/sol-sdk/account/lookupTable.d.ts +24 -0
- package/dist/src/sol-sdk/account/lookupTable.d.ts.map +1 -0
- package/dist/src/sol-sdk/account/lookupTable.js +103 -0
- package/dist/src/sol-sdk/account/lookupTable.js.map +1 -0
- package/dist/src/sol-sdk/batch/create.d.ts +23 -0
- package/dist/src/sol-sdk/batch/create.d.ts.map +1 -0
- package/dist/src/sol-sdk/batch/create.js +580 -0
- package/dist/src/sol-sdk/batch/create.js.map +1 -0
- package/dist/src/sol-sdk/batch/external-sniper.d.ts +31 -0
- package/dist/src/sol-sdk/batch/external-sniper.d.ts.map +1 -0
- package/dist/src/sol-sdk/batch/external-sniper.js +163 -0
- package/dist/src/sol-sdk/batch/external-sniper.js.map +1 -0
- package/dist/src/sol-sdk/batch/index.d.ts +144 -0
- package/dist/src/sol-sdk/batch/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/batch/index.js +1573 -0
- package/dist/src/sol-sdk/batch/index.js.map +1 -0
- package/dist/src/sol-sdk/calc.d.ts +277 -0
- package/dist/src/sol-sdk/calc.d.ts.map +1 -0
- package/dist/src/sol-sdk/calc.js +590 -0
- package/dist/src/sol-sdk/calc.js.map +1 -0
- package/dist/src/sol-sdk/index.d.ts +1 -0
- package/dist/src/sol-sdk/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/index.js +1 -0
- package/dist/src/sol-sdk/index.js.map +1 -0
- package/dist/src/sol-sdk/jito/index.d.ts +50 -0
- package/dist/src/sol-sdk/jito/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/jito/index.js +225 -0
- package/dist/src/sol-sdk/jito/index.js.map +1 -0
- package/dist/src/sol-sdk/launchlab/index.d.ts +32 -0
- package/dist/src/sol-sdk/launchlab/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/launchlab/index.js +78 -0
- package/dist/src/sol-sdk/launchlab/index.js.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/buy.d.ts +27 -0
- package/dist/src/sol-sdk/launchlab/instructions/buy.d.ts.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/buy.js +124 -0
- package/dist/src/sol-sdk/launchlab/instructions/buy.js.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/create.d.ts +27 -0
- package/dist/src/sol-sdk/launchlab/instructions/create.d.ts.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/create.js +125 -0
- package/dist/src/sol-sdk/launchlab/instructions/create.js.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/sell.d.ts +15 -0
- package/dist/src/sol-sdk/launchlab/instructions/sell.d.ts.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/sell.js +65 -0
- package/dist/src/sol-sdk/launchlab/instructions/sell.js.map +1 -0
- package/dist/src/sol-sdk/meteora/index.d.ts +32 -0
- package/dist/src/sol-sdk/meteora/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/meteora/index.js +72 -0
- package/dist/src/sol-sdk/meteora/index.js.map +1 -0
- package/dist/src/sol-sdk/meteora/instructions/buy.d.ts +46 -0
- package/dist/src/sol-sdk/meteora/instructions/buy.d.ts.map +1 -0
- package/dist/src/sol-sdk/meteora/instructions/buy.js +153 -0
- package/dist/src/sol-sdk/meteora/instructions/buy.js.map +1 -0
- package/dist/src/sol-sdk/meteora/instructions/sell.d.ts +24 -0
- package/dist/src/sol-sdk/meteora/instructions/sell.d.ts.map +1 -0
- package/dist/src/sol-sdk/meteora/instructions/sell.js +98 -0
- package/dist/src/sol-sdk/meteora/instructions/sell.js.map +1 -0
- package/dist/src/sol-sdk/pump/index.d.ts +22 -0
- package/dist/src/sol-sdk/pump/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/pump/index.js +101 -0
- package/dist/src/sol-sdk/pump/index.js.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/buy.d.ts +29 -0
- package/dist/src/sol-sdk/pump/instructions/buy.d.ts.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/buy.js +131 -0
- package/dist/src/sol-sdk/pump/instructions/buy.js.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts +36 -0
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.js +77 -0
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.js.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/sell.d.ts +7 -0
- package/dist/src/sol-sdk/pump/instructions/sell.d.ts.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/sell.js +38 -0
- package/dist/src/sol-sdk/pump/instructions/sell.js.map +1 -0
- package/dist/src/sol-sdk/pumpswap/index.d.ts +9 -0
- package/dist/src/sol-sdk/pumpswap/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/pumpswap/index.js +27 -0
- package/dist/src/sol-sdk/pumpswap/index.js.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts +61 -0
- package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/buy.js +215 -0
- package/dist/src/sol-sdk/pumpswap/instructions/buy.js.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/migrate.d.ts +3 -0
- package/dist/src/sol-sdk/pumpswap/instructions/migrate.d.ts.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/migrate.js +33 -0
- package/dist/src/sol-sdk/pumpswap/instructions/migrate.js.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/sell.d.ts +20 -0
- package/dist/src/sol-sdk/pumpswap/instructions/sell.d.ts.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/sell.js +107 -0
- package/dist/src/sol-sdk/pumpswap/instructions/sell.js.map +1 -0
- package/dist/src/sol-sdk/pumpswap/rpc/index.d.ts +28 -0
- package/dist/src/sol-sdk/pumpswap/rpc/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/pumpswap/rpc/index.js +63 -0
- package/dist/src/sol-sdk/pumpswap/rpc/index.js.map +1 -0
- package/dist/src/sol-sdk/raydium/index.d.ts +16 -0
- package/dist/src/sol-sdk/raydium/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/index.js +47 -0
- package/dist/src/sol-sdk/raydium/index.js.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/buy.d.ts +29 -0
- package/dist/src/sol-sdk/raydium/instructions/buy.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/buy.js +106 -0
- package/dist/src/sol-sdk/raydium/instructions/buy.js.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.d.ts +29 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.js +80 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.js.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmSell.d.ts +17 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmSell.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js +56 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/sell.d.ts +8558 -0
- package/dist/src/sol-sdk/raydium/instructions/sell.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/sell.js +70 -0
- package/dist/src/sol-sdk/raydium/instructions/sell.js.map +1 -0
- package/dist/src/sol-sdk/raydium/rpc/index.d.ts +39 -0
- package/dist/src/sol-sdk/raydium/rpc/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/rpc/index.js +82 -0
- package/dist/src/sol-sdk/raydium/rpc/index.js.map +1 -0
- package/dist/src/sol-sdk/raydium/rpc/raydium.d.ts +5 -0
- package/dist/src/sol-sdk/raydium/rpc/raydium.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/rpc/raydium.js +18 -0
- package/dist/src/sol-sdk/raydium/rpc/raydium.js.map +1 -0
- package/dist/src/sol-sdk/rpc/index.d.ts +33 -0
- package/dist/src/sol-sdk/rpc/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/rpc/index.js +128 -0
- package/dist/src/sol-sdk/rpc/index.js.map +1 -0
- package/dist/src/sol-sdk/transfer/index.d.ts +24 -0
- package/dist/src/sol-sdk/transfer/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/transfer/index.js +65 -0
- package/dist/src/sol-sdk/transfer/index.js.map +1 -0
- package/dist/src/sol-sdk/turnover/index.d.ts +84 -0
- package/dist/src/sol-sdk/turnover/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/turnover/index.js +569 -0
- package/dist/src/sol-sdk/turnover/index.js.map +1 -0
- package/dist/src/tx-tracker/detail-adapter.d.ts +100 -0
- package/dist/src/tx-tracker/detail-adapter.d.ts.map +1 -0
- package/dist/src/tx-tracker/detail-adapter.js +215 -0
- package/dist/src/tx-tracker/detail-adapter.js.map +1 -0
- package/dist/src/tx-tracker/index.d.ts +142 -0
- package/dist/src/tx-tracker/index.d.ts.map +1 -0
- package/dist/src/tx-tracker/index.js +447 -0
- package/dist/src/tx-tracker/index.js.map +1 -0
- package/dist/src/types/index.d.ts +76 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +69 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/websocket.d.ts +15 -0
- package/dist/src/types/websocket.d.ts.map +1 -0
- package/dist/src/types/websocket.js +18 -0
- package/dist/src/types/websocket.js.map +1 -0
- package/dist/src/utils/index.d.ts +13 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +174 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/wallet-store.d.ts +124 -0
- package/dist/src/wallet-store.d.ts.map +1 -0
- package/dist/src/wallet-store.js +524 -0
- package/dist/src/wallet-store.js.map +1 -0
- package/package.json +86 -0
- package/scripts/postinstall.js +88 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Keypair } from '@solana/web3.js';
|
|
2
|
+
export declare const formatWalletAddress: (address: string) => string;
|
|
3
|
+
export declare const getSplitAmount: (amount: number | string, decimals: number) => number;
|
|
4
|
+
export declare const getWalletAddress: (privateKey: string) => string;
|
|
5
|
+
export declare const getWalletKeypair: (privateKey: string) => Keypair;
|
|
6
|
+
export declare const formatNumber: (num: number | string) => string;
|
|
7
|
+
export declare const getNativePriceFromAmountInOut: (amountIn: string, amountOut: string, tokenA: string, decimals?: number) => string;
|
|
8
|
+
export declare const formatNumberToKMBT: (num: number) => string;
|
|
9
|
+
export declare const formatSmallNumber: (num: string, threshold?: number, significantDigits?: number, trimTrailingZeros?: boolean) => string;
|
|
10
|
+
export declare const normalNumber: (num: number | string, threshold?: number, decimalPlaces?: number, trimTrailingZeros?: boolean) => string;
|
|
11
|
+
export declare const sleep: (ms: number) => Promise<unknown>;
|
|
12
|
+
export declare const getValidPairs: (pairs: Pair[]) => Pair[];
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoB,MAAM,iBAAiB,CAAC;AAO5D,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,MAGrD,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,GAAG,MAAM,EAAE,UAAU,MAAM,KAAG,MAa1E,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG,MAErD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG,OAErD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,GAAG,MAAM,WAMhD,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,QAAQ,MAAM,EACd,WAAU,MAAU,KACnB,MAmBF,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,MAwBhD,CAAC;AAOF,eAAO,MAAM,iBAAiB,GAC5B,KAAK,MAAM,EACX,kBAAa,EACb,0BAAqB,EACrB,2BAAwB,KACvB,MAgEF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,KAAK,MAAM,GAAG,MAAM,EACpB,kBAAa,EACb,sBAAiB,EACjB,2BAAwB,KACvB,MAUF,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBAE/B,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,IAAI,EAAE,WAM1C,CAAC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { Keypair, LAMPORTS_PER_SOL } from '@solana/web3.js';
|
|
2
|
+
import bs58 from 'bs58';
|
|
3
|
+
import BigNumber from 'bignumber.js';
|
|
4
|
+
import { NATIVE_MINT } from '@solana/spl-token';
|
|
5
|
+
const validExchanges = ['Pump', 'PumpSwap', 'Raydium', 'Raydium CPMM', 'LaunchLab', 'Meteora'];
|
|
6
|
+
export const formatWalletAddress = (address) => {
|
|
7
|
+
if (!address)
|
|
8
|
+
return '';
|
|
9
|
+
return address.slice(0, 6) + '...' + address.slice(-4);
|
|
10
|
+
};
|
|
11
|
+
export const getSplitAmount = (amount, decimals) => {
|
|
12
|
+
const splitStr = String(amount).split('.');
|
|
13
|
+
const left = splitStr[0];
|
|
14
|
+
if (decimals == 0)
|
|
15
|
+
return Number(left);
|
|
16
|
+
if (splitStr.length > 1) {
|
|
17
|
+
const right = splitStr[1];
|
|
18
|
+
if (right.length > decimals) {
|
|
19
|
+
return Number(left + '.' + right.slice(0, decimals));
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return Number(left + '.' + right);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return Number(left);
|
|
26
|
+
};
|
|
27
|
+
export const getWalletAddress = (privateKey) => {
|
|
28
|
+
return Keypair.fromSecretKey(bs58.decode(privateKey)).publicKey.toBase58();
|
|
29
|
+
};
|
|
30
|
+
export const getWalletKeypair = (privateKey) => {
|
|
31
|
+
return Keypair.fromSecretKey(bs58.decode(privateKey));
|
|
32
|
+
};
|
|
33
|
+
export const formatNumber = (num) => {
|
|
34
|
+
num = Number(num);
|
|
35
|
+
if (num >= 1e9)
|
|
36
|
+
return (num / 1e9).toFixed(2).replace(/\.00$/, '') + 'B';
|
|
37
|
+
if (num >= 1e6)
|
|
38
|
+
return (num / 1e6).toFixed(2).replace(/\.00$/, '') + 'M';
|
|
39
|
+
if (num >= 1e3)
|
|
40
|
+
return (num / 1e3).toFixed(2).replace(/\.00$/, '') + 'k';
|
|
41
|
+
return num.toString();
|
|
42
|
+
};
|
|
43
|
+
export const getNativePriceFromAmountInOut = (amountIn, amountOut, tokenA, decimals = 6) => {
|
|
44
|
+
try {
|
|
45
|
+
let price = '0';
|
|
46
|
+
if (tokenA === NATIVE_MINT.toBase58()) {
|
|
47
|
+
price = new BigNumber(amountIn)
|
|
48
|
+
.div(LAMPORTS_PER_SOL)
|
|
49
|
+
.div(new BigNumber(amountOut).div(10 ** decimals))
|
|
50
|
+
.toString(10);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
price = new BigNumber(amountOut)
|
|
54
|
+
.div(LAMPORTS_PER_SOL)
|
|
55
|
+
.div(new BigNumber(amountIn).div(10 ** decimals))
|
|
56
|
+
.toString(10);
|
|
57
|
+
}
|
|
58
|
+
return price;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.error(error);
|
|
62
|
+
return '0';
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
// 数字格式化为 k, m, b, t
|
|
66
|
+
export const formatNumberToKMBT = (num) => {
|
|
67
|
+
// 处理正负数
|
|
68
|
+
const isNegative = num < 0;
|
|
69
|
+
const absNum = Math.abs(num);
|
|
70
|
+
// 进行格式化处理
|
|
71
|
+
let result;
|
|
72
|
+
if (absNum >= 1e12) {
|
|
73
|
+
result = (absNum / 1e12).toFixed(2) + 'T';
|
|
74
|
+
}
|
|
75
|
+
else if (absNum >= 1e9) {
|
|
76
|
+
result = (absNum / 1e9).toFixed(2) + 'B';
|
|
77
|
+
}
|
|
78
|
+
else if (absNum >= 1e6) {
|
|
79
|
+
result = (absNum / 1e6).toFixed(2) + 'M';
|
|
80
|
+
}
|
|
81
|
+
else if (absNum >= 1e3) {
|
|
82
|
+
result = (absNum / 1e3).toFixed(2) + 'K';
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
result = absNum.toFixed(2);
|
|
86
|
+
}
|
|
87
|
+
// 去除末尾的 0 和不必要的小数点
|
|
88
|
+
result = result.replace(/\.?0+$/, '');
|
|
89
|
+
// 添加负号(如果原数为负)
|
|
90
|
+
return isNegative ? '-' + result : result;
|
|
91
|
+
};
|
|
92
|
+
/* @param {number} num - 要格式化的数字
|
|
93
|
+
* @param {number} threshold - 阈值,0的个数大于等于此值时进行处理
|
|
94
|
+
* @param {number} significantDigits - 保留的有效数字位数
|
|
95
|
+
* @returns {string} 格式化后的字符串
|
|
96
|
+
*/
|
|
97
|
+
export const formatSmallNumber = (num, threshold = 4, significantDigits = 6, trimTrailingZeros = true) => {
|
|
98
|
+
// 将数字转换为字符串,避免科学计数法
|
|
99
|
+
const numStr = num;
|
|
100
|
+
if (!numStr.includes('.'))
|
|
101
|
+
return numStr;
|
|
102
|
+
const [intPart, decimalPart] = numStr.split('.');
|
|
103
|
+
// 计算开头连续0的个数
|
|
104
|
+
let zeroCount = 0;
|
|
105
|
+
for (let i = 0; i < decimalPart.length; i++) {
|
|
106
|
+
if (decimalPart[i] === '0') {
|
|
107
|
+
zeroCount++;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// 如果0的个数大于阈值,使用下标格式
|
|
114
|
+
if (zeroCount >= threshold) {
|
|
115
|
+
const subscript = zeroCount
|
|
116
|
+
.toString()
|
|
117
|
+
.split('')
|
|
118
|
+
.map(n => '₀₁₂₃₄₅₆₇₈₉'[parseInt(n)])
|
|
119
|
+
.join('');
|
|
120
|
+
const remainingPart = decimalPart.slice(zeroCount);
|
|
121
|
+
// 取指定有效位数
|
|
122
|
+
let formattedRemaining = remainingPart.slice(0, significantDigits);
|
|
123
|
+
// 如果需要去掉末尾的0
|
|
124
|
+
if (trimTrailingZeros) {
|
|
125
|
+
formattedRemaining = formattedRemaining.replace(/0+$/, '');
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// 补 0
|
|
129
|
+
formattedRemaining = formattedRemaining.padEnd(significantDigits, '0');
|
|
130
|
+
}
|
|
131
|
+
// 如果去掉末尾的0后为空字符串,直接返回不包含小数点的结果
|
|
132
|
+
if (formattedRemaining === '') {
|
|
133
|
+
return `${intPart}.0${subscript}`;
|
|
134
|
+
}
|
|
135
|
+
return `${intPart}.0${subscript}${formattedRemaining}`;
|
|
136
|
+
}
|
|
137
|
+
// 否则从第一个非0数字开始计算位数
|
|
138
|
+
const firstNonZeroIndex = decimalPart.search(/[1-9]/);
|
|
139
|
+
if (firstNonZeroIndex === -1) {
|
|
140
|
+
// 如果小数部分全是0
|
|
141
|
+
return trimTrailingZeros ? `${intPart}` : `${intPart}.${decimalPart}`;
|
|
142
|
+
}
|
|
143
|
+
let formattedDecimal = decimalPart.slice(0, firstNonZeroIndex + significantDigits);
|
|
144
|
+
// 根据trimTrailingZeros参数决定是否去掉末尾的0
|
|
145
|
+
if (trimTrailingZeros) {
|
|
146
|
+
formattedDecimal = formattedDecimal.replace(/0+$/, '');
|
|
147
|
+
// 如果去掉末尾的0后为空字符串或者全是前导零,则不显示小数点
|
|
148
|
+
if (formattedDecimal === '' || formattedDecimal.match(/^0+$/)) {
|
|
149
|
+
return intPart;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return `${intPart}.${formattedDecimal}`;
|
|
153
|
+
};
|
|
154
|
+
export const normalNumber = (num, threshold = 3, decimalPlaces = 6, trimTrailingZeros = true) => {
|
|
155
|
+
if (isNaN(Number(num))) {
|
|
156
|
+
return '0';
|
|
157
|
+
}
|
|
158
|
+
const currentNum = new BigNumber(num).toString(10);
|
|
159
|
+
if (Math.abs(Number(currentNum)) > 0.9999) {
|
|
160
|
+
return formatNumberToKMBT(Number(currentNum));
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
return formatSmallNumber(currentNum, threshold, decimalPlaces, trimTrailingZeros);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
export const sleep = (ms) => {
|
|
167
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
168
|
+
};
|
|
169
|
+
export const getValidPairs = (pairs) => {
|
|
170
|
+
const filteredPairs = pairs.filter(item => validExchanges.includes(item.exchange.name));
|
|
171
|
+
const solPairs = filteredPairs.filter(item => item.tokenA === NATIVE_MINT.toBase58() || item.tokenB === NATIVE_MINT.toBase58());
|
|
172
|
+
return solPairs;
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ForgeX CLI 钱包存储
|
|
3
|
+
*
|
|
4
|
+
* 本地加密存储钱包组数据,替代前端的 IndexedDB 持久化方案。
|
|
5
|
+
* 使用 AES 加密私钥(静态加密),支持 KDF v3 格式导入/导出。
|
|
6
|
+
*
|
|
7
|
+
* 加密方案:
|
|
8
|
+
* - 每个 WalletInfo.privateKey 字段使用 CryptoJS AES 加密存储
|
|
9
|
+
* - master password 通过 FORGEX_PASSWORD 环境变量或 inquirer 交互输入
|
|
10
|
+
* - WalletStoreData.encrypted 标记区分加密格式和旧明文格式
|
|
11
|
+
* - 旧格式自动迁移到加密格式
|
|
12
|
+
*/
|
|
13
|
+
export interface WalletInfo {
|
|
14
|
+
walletAddress: string;
|
|
15
|
+
privateKey: string;
|
|
16
|
+
note: string;
|
|
17
|
+
}
|
|
18
|
+
export interface GroupInfo {
|
|
19
|
+
name: string;
|
|
20
|
+
groupId: number;
|
|
21
|
+
groupType: 'local' | 'monitor';
|
|
22
|
+
wallets: WalletInfo[];
|
|
23
|
+
monitorType: 'normal' | 'top100' | 'retail';
|
|
24
|
+
note: string;
|
|
25
|
+
monitorCA?: string;
|
|
26
|
+
filterGroupIds?: number[];
|
|
27
|
+
}
|
|
28
|
+
export interface WalletStoreData {
|
|
29
|
+
groups: Record<number, GroupInfo>;
|
|
30
|
+
notes: Record<string, string>;
|
|
31
|
+
devWallets: Record<string, string>;
|
|
32
|
+
/** 标记存储是否已加密。true 表示 privateKey 字段为 AES 密文 */
|
|
33
|
+
encrypted?: boolean;
|
|
34
|
+
/** 用于验证密码正确性的校验值(加密后的已知明文) */
|
|
35
|
+
passwordCheck?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 设置 master password(供 CLI 入口调用)
|
|
39
|
+
* 密码将保存在内存中,仅在当前进程生命周期内有效。
|
|
40
|
+
*/
|
|
41
|
+
export declare function setMasterPassword(password: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* 获取当前 master password
|
|
44
|
+
* 优先级:内存中的密码 > 环境变量 FORGEX_PASSWORD
|
|
45
|
+
*/
|
|
46
|
+
export declare function getMasterPassword(): string | null;
|
|
47
|
+
/**
|
|
48
|
+
* 确保 master password 已设置。
|
|
49
|
+
* 如果未设置,尝试从环境变量读取;如果仍未获取到,通过 inquirer 交互提示输入。
|
|
50
|
+
* 此函数为异步函数,因为可能需要等待用户输入。
|
|
51
|
+
*/
|
|
52
|
+
export declare function ensureMasterPassword(): Promise<string>;
|
|
53
|
+
/**
|
|
54
|
+
* 解密单个 WalletInfo 的私钥(供 SDK 和命令调用)
|
|
55
|
+
*
|
|
56
|
+
* 如果存储未加密(旧格式),直接返回原始 privateKey。
|
|
57
|
+
* 如果已加密,使用 master password 解密后返回 Base58 明文私钥。
|
|
58
|
+
*/
|
|
59
|
+
export declare function getDecryptedPrivateKey(walletInfo: WalletInfo): string;
|
|
60
|
+
/**
|
|
61
|
+
* 异步版本的解密函数,会自动确保密码已设置
|
|
62
|
+
*/
|
|
63
|
+
export declare function getDecryptedPrivateKeyAsync(walletInfo: WalletInfo): Promise<string>;
|
|
64
|
+
/** 加载钱包存储数据(原始格式,不解密私钥) */
|
|
65
|
+
export declare function loadWalletStore(): WalletStoreData;
|
|
66
|
+
/** 保存钱包存储数据 */
|
|
67
|
+
export declare function saveWalletStore(data: WalletStoreData): void;
|
|
68
|
+
/**
|
|
69
|
+
* 检测存储是否为旧格式(未加密),如果是则提示并执行迁移。
|
|
70
|
+
*
|
|
71
|
+
* 此函数应在 CLI 入口处调用。迁移过程:
|
|
72
|
+
* 1. 读取明文存储
|
|
73
|
+
* 2. 确保用户设置了 master password
|
|
74
|
+
* 3. 加密所有 privateKey 字段
|
|
75
|
+
* 4. 添加 encrypted 标记和密码校验值
|
|
76
|
+
* 5. 保存加密后的存储
|
|
77
|
+
*/
|
|
78
|
+
export declare function migrateToEncryptedStore(): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* 验证当前 master password 是否与存储中的密码校验值匹配。
|
|
81
|
+
* 如果存储未加密,返回 true。
|
|
82
|
+
*/
|
|
83
|
+
export declare function validateMasterPassword(): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* 确保密码已设置且正确。供 CLI 入口在执行需要私钥的命令前调用。
|
|
86
|
+
*/
|
|
87
|
+
export declare function ensurePasswordAndValidate(): Promise<void>;
|
|
88
|
+
/** 获取所有钱包组 */
|
|
89
|
+
export declare function getAllGroups(): GroupInfo[];
|
|
90
|
+
/** 获取单个钱包组 */
|
|
91
|
+
export declare function getGroup(groupId: number): GroupInfo | undefined;
|
|
92
|
+
/** 保存钱包组(新增或更新) */
|
|
93
|
+
export declare function saveGroup(group: GroupInfo): void;
|
|
94
|
+
/** 删除钱包组 */
|
|
95
|
+
export declare function removeGroup(groupId: number): boolean;
|
|
96
|
+
/** 向钱包组添加钱包(私钥将根据存储状态自动加密) */
|
|
97
|
+
export declare function addWalletsToGroup(groupId: number, wallets: WalletInfo[]): boolean;
|
|
98
|
+
/** 从钱包组移除钱包 */
|
|
99
|
+
export declare function removeWalletsFromGroup(groupId: number, addresses: string[]): boolean;
|
|
100
|
+
/** 生成新钱包(返回明文私钥,存储时由 addWalletsToGroup 负责加密) */
|
|
101
|
+
export declare function generateWallets(count: number): WalletInfo[];
|
|
102
|
+
/** 从私钥恢复钱包信息 */
|
|
103
|
+
export declare function walletFromPrivateKey(privateKey: string, note?: string): WalletInfo;
|
|
104
|
+
/** 加密导出钱包存储(整体加密,用于备份) */
|
|
105
|
+
export declare function encryptWalletStore(password: string): string;
|
|
106
|
+
/** 解密导入钱包存储 */
|
|
107
|
+
export declare function decryptWalletStore(encrypted: string, password: string): WalletStoreData | null;
|
|
108
|
+
/** 导出钱包组为 CSV(自动解密私钥) */
|
|
109
|
+
export declare function exportGroupToCsv(groupId: number): string | null;
|
|
110
|
+
/** 从 CSV 导入钱包 */
|
|
111
|
+
export declare function importWalletsFromCsv(csvContent: string): WalletInfo[];
|
|
112
|
+
/** 导出所有钱包组为 JSON(兼容前端导入格式,自动解密私钥) */
|
|
113
|
+
export declare function exportAllGroupsJson(): string;
|
|
114
|
+
/** 导出加密的钱包组 JSON */
|
|
115
|
+
export declare function exportEncryptedGroupsJson(password: string): string;
|
|
116
|
+
/** 导入钱包组 JSON */
|
|
117
|
+
export declare function importGroupsFromJson(jsonContent: string, password?: string): GroupInfo[] | null;
|
|
118
|
+
/** 获取钱包备注 */
|
|
119
|
+
export declare function getNote(address: string): string;
|
|
120
|
+
/** 设置钱包备注 */
|
|
121
|
+
export declare function setNote(address: string, note: string): void;
|
|
122
|
+
/** 获取所有备注 */
|
|
123
|
+
export declare function getAllNotes(): Record<string, string>;
|
|
124
|
+
//# sourceMappingURL=wallet-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-store.d.ts","sourceRoot":"","sources":["../../src/wallet-store.ts"],"names":[],"mappings":"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"}
|