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 @@
|
|
|
1
|
+
{"version":3,"file":"sell.d.ts","sourceRoot":"","sources":["../../../../../src/sol-sdk/raydium/instructions/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,4BAA4B,CAAC;AASnF,OAAO,EACL,WAAW,EAEX,SAAS,EACT,UAAU,EAEV,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,OAAO,CAAC;AAGvB,eAAO,MAAM,UAAU,GAAU,YAAY,UAAU,EAAE,QAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAQtE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,+KAYnC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,4BAA4B,CAAC,EAAE,sBAAsB,CAAC;CACvD,KAAG,OAAO,CAAC,WAAW,CA+EtB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { makeSwapFixedInInstruction } from '@raydium-io/raydium-sdk-v2';
|
|
2
|
+
import { NATIVE_MINT, getAssociatedTokenAddress, createAssociatedTokenAccountIdempotentInstruction, createCloseAccountInstruction, createInitializeAccountInstruction, TOKEN_PROGRAM_ID, } from '@solana/spl-token';
|
|
3
|
+
import { Transaction, Keypair, PublicKey, SystemProgram, } from '@solana/web3.js';
|
|
4
|
+
import BN from 'bn.js';
|
|
5
|
+
import { initSdk } from '../index.js';
|
|
6
|
+
export const beforeSell = async (connection, poolId) => {
|
|
7
|
+
const raydium = await initSdk(connection);
|
|
8
|
+
const [data, poolKeys, rpcData] = await Promise.all([
|
|
9
|
+
raydium.api.fetchPoolById({ ids: poolId }),
|
|
10
|
+
raydium.liquidity.getAmmPoolKeys(poolId),
|
|
11
|
+
raydium.liquidity.getRpcPoolInfo(poolId),
|
|
12
|
+
]);
|
|
13
|
+
return [data[0], poolKeys, rpcData];
|
|
14
|
+
};
|
|
15
|
+
export const sellInstruction = async ({ amount, owner, poolKeys, mintA, mintB, minAmountOut, needCreateAtaAccount = true, needCloseTokenAccount = false, needCloseWsolAccount = true, initialWsolAccount, createWsolAccountInstruction, }) => {
|
|
16
|
+
const inputMint = NATIVE_MINT.toBase58();
|
|
17
|
+
const randomAccount = Keypair.generate();
|
|
18
|
+
const seed = randomAccount.publicKey.toBase58().slice(0, 32);
|
|
19
|
+
if (mintA !== inputMint && mintB !== inputMint)
|
|
20
|
+
return Promise.reject(new Error('input mint does not match pool'));
|
|
21
|
+
const transaction = new Transaction();
|
|
22
|
+
const baseLamports = 2039280;
|
|
23
|
+
// 如果提供了初始 wsolAccount,使用它;否则创建新的
|
|
24
|
+
const wsolAccount = initialWsolAccount || (await PublicKey.createWithSeed(owner, seed, TOKEN_PROGRAM_ID));
|
|
25
|
+
// 只有在需要创建账户且没有提供预创建指令时才创建新账户
|
|
26
|
+
if (needCreateAtaAccount && !createWsolAccountInstruction) {
|
|
27
|
+
const createWsolAccount = SystemProgram.createAccountWithSeed({
|
|
28
|
+
fromPubkey: owner,
|
|
29
|
+
newAccountPubkey: wsolAccount,
|
|
30
|
+
basePubkey: owner,
|
|
31
|
+
lamports: new BN(baseLamports).toNumber(),
|
|
32
|
+
space: 165,
|
|
33
|
+
programId: TOKEN_PROGRAM_ID,
|
|
34
|
+
seed,
|
|
35
|
+
});
|
|
36
|
+
transaction.add(createWsolAccount, createInitializeAccountInstruction(wsolAccount, NATIVE_MINT, owner));
|
|
37
|
+
}
|
|
38
|
+
else if (createWsolAccountInstruction) {
|
|
39
|
+
// 如果提供了预创建指令,使用它
|
|
40
|
+
transaction.add(createWsolAccountInstruction);
|
|
41
|
+
}
|
|
42
|
+
const tokenMint = mintA == NATIVE_MINT.toBase58() ? mintB : mintA;
|
|
43
|
+
const tokenAccount = await getAssociatedTokenAddress(new PublicKey(tokenMint), owner);
|
|
44
|
+
// 只有在需要创建 Token Account 时才创建
|
|
45
|
+
if (needCreateAtaAccount) {
|
|
46
|
+
transaction.add(createAssociatedTokenAccountIdempotentInstruction(owner, tokenAccount, owner, new PublicKey(tokenMint)));
|
|
47
|
+
}
|
|
48
|
+
const swapInstruction = makeSwapFixedInInstruction({
|
|
49
|
+
poolKeys,
|
|
50
|
+
userKeys: {
|
|
51
|
+
tokenAccountIn: tokenAccount,
|
|
52
|
+
tokenAccountOut: wsolAccount,
|
|
53
|
+
owner,
|
|
54
|
+
},
|
|
55
|
+
amountIn: new BN(amount),
|
|
56
|
+
minAmountOut: new BN(minAmountOut),
|
|
57
|
+
}, 4);
|
|
58
|
+
transaction.add(swapInstruction);
|
|
59
|
+
// 只有在需要关闭 WSOL 账户时才添加关闭指令
|
|
60
|
+
if (needCloseWsolAccount) {
|
|
61
|
+
transaction.add(createCloseAccountInstruction(wsolAccount, owner, owner));
|
|
62
|
+
}
|
|
63
|
+
// 只有在需要关闭 Token 账户时才添加关闭指令
|
|
64
|
+
if (needCloseTokenAccount) {
|
|
65
|
+
transaction.add(createCloseAccountInstruction(tokenAccount, owner, owner));
|
|
66
|
+
}
|
|
67
|
+
transaction.feePayer = owner;
|
|
68
|
+
return transaction;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=sell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sell.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/raydium/instructions/sell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Connection } from '@solana/web3.js';
|
|
2
|
+
export declare const raydiumCalcCaPrice: (connection: Connection, poolId: string) => Promise<string>;
|
|
3
|
+
export declare const raydiumGetPoolInfo: (connection: Connection, poolId: string) => Promise<{
|
|
4
|
+
poolBaseTokenInfo: {
|
|
5
|
+
amount: string;
|
|
6
|
+
};
|
|
7
|
+
poolQuoteTokenInfo: {
|
|
8
|
+
amount: string;
|
|
9
|
+
};
|
|
10
|
+
}>;
|
|
11
|
+
export declare const raydiumGetCpmmPoolInfo: (connection: Connection, poolId: string) => Promise<{
|
|
12
|
+
poolBaseTokenInfo: {
|
|
13
|
+
amount: string;
|
|
14
|
+
};
|
|
15
|
+
poolQuoteTokenInfo: {
|
|
16
|
+
amount: string;
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
export declare const searchPoolByMint: (mint: string, isNew: boolean) => Promise<string | {
|
|
20
|
+
poolId: string;
|
|
21
|
+
poolKeys: object;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const getPoolVault: (poolId: string) => Promise<{
|
|
24
|
+
A: string;
|
|
25
|
+
B: string;
|
|
26
|
+
mintA: string;
|
|
27
|
+
mintB: string;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const getPoolKeys: (connection: Connection, poolId: string) => Promise<{
|
|
30
|
+
poolKeys: import("@raydium-io/raydium-sdk-v2").AmmV4Keys | import("@raydium-io/raydium-sdk-v2").AmmV5Keys;
|
|
31
|
+
}>;
|
|
32
|
+
export declare const getRaydiumCpmmKeys: (connection: Connection, poolId: string) => Promise<{
|
|
33
|
+
poolKeys: {
|
|
34
|
+
poolInfo: import("@raydium-io/raydium-sdk-v2").ApiV3PoolInfoStandardItemCpmm;
|
|
35
|
+
poolKeys: import("@raydium-io/raydium-sdk-v2").CpmmKeys;
|
|
36
|
+
rpcData: import("@raydium-io/raydium-sdk-v2").CpmmRpcData;
|
|
37
|
+
};
|
|
38
|
+
}>;
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/sol-sdk/raydium/rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQxD,eAAO,MAAM,kBAAkB,GAAU,YAAY,UAAU,EAAE,QAAQ,MAAM,oBAe9E,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,YAAY,UAAU,EAAE,QAAQ,MAAM;;;;;;;EAW9E,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAU,YAAY,UAAU,EAAE,QAAQ,MAAM;;;;;;;EAWlF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,OAAO,KACb,OAAO,CAAC,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAcvD,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,QAAQ,MAAM,KACb,OAAO,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQhE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,YAAY,UAAU,EAAE,QAAQ,MAAM;;EAMvE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,YAAY,UAAU,EAAE,QAAQ,MAAM;;;;;;EAM9E,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
import { NATIVE_MINT } from '@solana/spl-token';
|
|
3
|
+
import BigNumber from 'bignumber.js';
|
|
4
|
+
import initSDK from './raydium.js';
|
|
5
|
+
import { Api } from '@raydium-io/raydium-sdk-v2';
|
|
6
|
+
import axios from 'axios';
|
|
7
|
+
import { initSdk } from '../index.js';
|
|
8
|
+
export const raydiumCalcCaPrice = async (connection, poolId) => {
|
|
9
|
+
const raydium = initSDK(connection);
|
|
10
|
+
const pool = await raydium.liquidity.getRpcPoolInfo(poolId);
|
|
11
|
+
const baseReserve = pool.baseReserve.toString(10);
|
|
12
|
+
const quoteReserve = pool.quoteReserve.toString(10);
|
|
13
|
+
const baseDecimal = pool.baseDecimal.toString(10);
|
|
14
|
+
const quoteDecimal = pool.quoteDecimal.toString(10);
|
|
15
|
+
const baseAmount = new BigNumber(baseReserve).div(new BigNumber(10).pow(new BigNumber(baseDecimal)));
|
|
16
|
+
const quoteAmount = new BigNumber(quoteReserve).div(new BigNumber(10).pow(new BigNumber(quoteDecimal)));
|
|
17
|
+
const price = baseAmount.div(quoteAmount).toFixed(9);
|
|
18
|
+
return price;
|
|
19
|
+
};
|
|
20
|
+
export const raydiumGetPoolInfo = async (connection, poolId) => {
|
|
21
|
+
const raydium = await initSdk(connection);
|
|
22
|
+
const pool = await raydium.liquidity.getRpcPoolInfo(poolId);
|
|
23
|
+
return {
|
|
24
|
+
poolBaseTokenInfo: {
|
|
25
|
+
amount: pool.baseReserve.toString(10),
|
|
26
|
+
},
|
|
27
|
+
poolQuoteTokenInfo: {
|
|
28
|
+
amount: pool.quoteReserve.toString(10),
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export const raydiumGetCpmmPoolInfo = async (connection, poolId) => {
|
|
33
|
+
const raydium = await initSdk(connection);
|
|
34
|
+
const pool = await raydium.cpmm.getPoolInfoFromRpc(poolId);
|
|
35
|
+
return {
|
|
36
|
+
poolBaseTokenInfo: {
|
|
37
|
+
amount: pool.rpcData.baseReserve.toString(10),
|
|
38
|
+
},
|
|
39
|
+
poolQuoteTokenInfo: {
|
|
40
|
+
amount: pool.rpcData.quoteReserve.toString(10),
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export const searchPoolByMint = async (mint, isNew) => {
|
|
45
|
+
return new Promise(async (resolve, reject) => {
|
|
46
|
+
try {
|
|
47
|
+
const pools = await new Api({
|
|
48
|
+
cluster: 'mainnet',
|
|
49
|
+
timeout: 10000,
|
|
50
|
+
}).fetchPoolByMints({ mint1: NATIVE_MINT, mint2: new PublicKey(mint) });
|
|
51
|
+
const pool = pools.data.filter(item => item.type === 'Standard');
|
|
52
|
+
resolve(pool[0]?.id ?? null);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
throw new Error(error);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
export const getPoolVault = async (poolId) => {
|
|
60
|
+
const res = await axios.get(`https://api-v3.raydium.io/pools/key/ids?ids=${poolId}`);
|
|
61
|
+
return {
|
|
62
|
+
A: res.data.data[0].vault.A,
|
|
63
|
+
B: res.data.data[0].vault.B,
|
|
64
|
+
mintA: res.data.data[0].mintA.address,
|
|
65
|
+
mintB: res.data.data[0].mintB.address,
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
export const getPoolKeys = async (connection, poolId) => {
|
|
69
|
+
const raydium = await initSdk(connection);
|
|
70
|
+
const poolKeys = await raydium.liquidity.getAmmPoolKeys(poolId);
|
|
71
|
+
return {
|
|
72
|
+
poolKeys,
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
export const getRaydiumCpmmKeys = async (connection, poolId) => {
|
|
76
|
+
const raydium = await initSdk(connection);
|
|
77
|
+
const poolKeys = await raydium.cpmm.getPoolInfoFromRpc(poolId);
|
|
78
|
+
return {
|
|
79
|
+
poolKeys,
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/raydium/rpc/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raydium.d.ts","sourceRoot":"","sources":["../../../../../src/sol-sdk/raydium/rpc/raydium.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,EAA4B,MAAM,4BAA4B,CAAC;yBAI/D,YAAY,UAAU;AAAtC,wBAaE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Keypair } from '@solana/web3.js';
|
|
2
|
+
import { Raydium } from '@raydium-io/raydium-sdk-v2';
|
|
3
|
+
let raydium;
|
|
4
|
+
export default (connection) => {
|
|
5
|
+
if (raydium) {
|
|
6
|
+
return raydium;
|
|
7
|
+
}
|
|
8
|
+
raydium = new Raydium({
|
|
9
|
+
connection,
|
|
10
|
+
owner: Keypair.generate(),
|
|
11
|
+
cluster: 'mainnet',
|
|
12
|
+
disableFeatureCheck: true,
|
|
13
|
+
disableLoadToken: true,
|
|
14
|
+
blockhashCommitment: 'processed',
|
|
15
|
+
});
|
|
16
|
+
return raydium;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=raydium.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raydium.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/raydium/rpc/raydium.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,EAA4B,MAAM,4BAA4B,CAAC;AAE/E,IAAI,OAAgB,CAAC;AAErB,eAAe,CAAC,UAAsB,EAAE,EAAE;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,IAAI,OAAO,CAAC;QACpB,UAAU;QACV,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;QACzB,OAAO,EAAE,SAAS;QAClB,mBAAmB,EAAE,IAAI;QACzB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,WAAW;KACE,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Connection, Commitment, TransactionInstruction } from '@solana/web3.js';
|
|
2
|
+
export declare const getConnection: (url: string, commitment?: Commitment) => Connection;
|
|
3
|
+
export declare const getNativeBalance: (connection: Connection, address: string) => Promise<number>;
|
|
4
|
+
export declare const getTokenAccountBalance: (connection: Connection, mint: string, address: string) => Promise<number>;
|
|
5
|
+
export declare const getMultipleTokenAccountBalanceByOwners: (connection: Connection, wallets: string[], tokenAddresses: string) => Promise<number[]>;
|
|
6
|
+
export declare const getTokenAccountsByOwner: (connection: Connection, address: string, tokenAddress: string) => Promise<import("@solana/web3.js").RpcResponseAndContext<import("@solana/web3.js").GetProgramAccountsResponse>>;
|
|
7
|
+
/**
|
|
8
|
+
* 获取减去 gasfee 和优先费的余额或token 余额
|
|
9
|
+
* @param address 地址
|
|
10
|
+
* @param tokenAddress 代币地址
|
|
11
|
+
* @param leftFee 是否减去 gasfee 和优先费
|
|
12
|
+
* @param priorityFee 优先费
|
|
13
|
+
* @param solBalance 已知余额
|
|
14
|
+
* @returns 余额或token 余额(uiAmount)
|
|
15
|
+
*/
|
|
16
|
+
export declare const getAccountBalanceLeftFee: (address: string, tokenAddress: string, leftFee: boolean, // 是否减去 gasfee 和优先费
|
|
17
|
+
priorityFee?: number, // 优先费
|
|
18
|
+
solBalance?: number, // 余额
|
|
19
|
+
fromTransfer?: boolean) => Promise<number>;
|
|
20
|
+
export declare const getMultipleAccountBalanceLeftFee: (wallets: string[], tokenAddress: string, leftFee: boolean, priorityFee?: number, solBalance?: number, // 余额
|
|
21
|
+
fromTransfer?: boolean) => Promise<number[]>;
|
|
22
|
+
/**
|
|
23
|
+
* 获取CU和价格
|
|
24
|
+
* @param priorityFee 优先费(uiAmount)
|
|
25
|
+
* @param estimateCU 估计CU
|
|
26
|
+
* @returns { limitIx: TransactionInstruction; priceIx: TransactionInstruction }
|
|
27
|
+
*/
|
|
28
|
+
export declare const getCU: (priorityFee: number, estimateCU?: number) => {
|
|
29
|
+
limitIx: TransactionInstruction;
|
|
30
|
+
priceIx: TransactionInstruction;
|
|
31
|
+
};
|
|
32
|
+
export declare const getTransactionStatus: (connection: Connection, txHash: string, attempts?: number, interval?: number) => Promise<boolean>;
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sol-sdk/rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,EAIV,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AASzB,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,aAAY,UAAwB,eAE9E,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,YAAY,UAAU,EACtB,SAAS,MAAM,KACd,OAAO,CAAC,MAAM,CAOhB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,YAAY,UAAU,EACtB,MAAM,MAAM,EACZ,SAAS,MAAM,KACd,OAAO,CAAC,MAAM,CAShB,CAAC;AAEF,eAAO,MAAM,sCAAsC,GACjD,YAAY,UAAU,EACtB,SAAS,MAAM,EAAE,EACjB,gBAAgB,MAAM,sBAMvB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,YAAY,UAAU,EACtB,SAAS,MAAM,EACf,cAAc,MAAM,mHAMrB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,MAAM,EACf,cAAc,MAAM,EACpB,SAAS,OAAO,EAAE,mBAAmB;AACrC,cAAc,MAAM,EAAE,MAAM;AAC5B,aAAa,MAAM,EAAE,KAAK;AAC1B,eAAe,OAAO,KACrB,OAAO,CAAC,MAAM,CAmChB,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAC3C,SAAS,MAAM,EAAE,EACjB,cAAc,MAAM,EACpB,SAAS,OAAO,EAChB,cAAc,MAAM,EACpB,aAAa,MAAM,EAAE,KAAK;AAC1B,eAAe,OAAO,sBAQvB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,aAAa,MAAM,EACnB,aAAa,MAAM,KAClB;IAAE,OAAO,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAA;CAQpE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,YAAY,UAAU,EACtB,QAAQ,MAAM,EACd,WAAU,MAAU,EACpB,WAAU,MAAa,KACtB,OAAO,CAAC,OAAO,CAmBjB,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Connection, PublicKey, LAMPORTS_PER_SOL, ComputeBudgetProgram, } from '@solana/web3.js';
|
|
2
|
+
import { getAssociatedTokenAddress, NATIVE_MINT } from '@solana/spl-token';
|
|
3
|
+
import { store } from '../../shims/store.js';
|
|
4
|
+
import { sleep } from '../../utils/index.js';
|
|
5
|
+
import BigNumber from 'bignumber.js';
|
|
6
|
+
const NATIVE_COIN = 'SOL';
|
|
7
|
+
export const getConnection = (url, commitment = 'confirmed') => {
|
|
8
|
+
return new Connection(url, commitment);
|
|
9
|
+
};
|
|
10
|
+
export const getNativeBalance = async (connection, address) => {
|
|
11
|
+
const balance = await connection.getBalance(new PublicKey(address));
|
|
12
|
+
const amount = new BigNumber(balance).div(new BigNumber(LAMPORTS_PER_SOL)).toNumber();
|
|
13
|
+
if (Number(amount) <= 0) {
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
return amount;
|
|
17
|
+
};
|
|
18
|
+
export const getTokenAccountBalance = async (connection, mint, address) => {
|
|
19
|
+
try {
|
|
20
|
+
const ataAccount = await getAssociatedTokenAddress(new PublicKey(mint), new PublicKey(address));
|
|
21
|
+
const tokenAccountBalance = await connection.getTokenAccountBalance(ataAccount);
|
|
22
|
+
if (!tokenAccountBalance.value.uiAmount)
|
|
23
|
+
return 0;
|
|
24
|
+
return tokenAccountBalance.value.uiAmount;
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
export const getMultipleTokenAccountBalanceByOwners = async (connection, wallets, tokenAddresses) => {
|
|
31
|
+
const tokenAccountBalances = await Promise.all(wallets.map(wallet => getTokenAccountBalance(connection, tokenAddresses, wallet)));
|
|
32
|
+
return tokenAccountBalances;
|
|
33
|
+
};
|
|
34
|
+
export const getTokenAccountsByOwner = async (connection, address, tokenAddress) => {
|
|
35
|
+
const tokenAccount = await connection.getTokenAccountsByOwner(new PublicKey(address), {
|
|
36
|
+
mint: new PublicKey(tokenAddress),
|
|
37
|
+
});
|
|
38
|
+
return tokenAccount;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* 获取减去 gasfee 和优先费的余额或token 余额
|
|
42
|
+
* @param address 地址
|
|
43
|
+
* @param tokenAddress 代币地址
|
|
44
|
+
* @param leftFee 是否减去 gasfee 和优先费
|
|
45
|
+
* @param priorityFee 优先费
|
|
46
|
+
* @param solBalance 已知余额
|
|
47
|
+
* @returns 余额或token 余额(uiAmount)
|
|
48
|
+
*/
|
|
49
|
+
export const getAccountBalanceLeftFee = async (address, tokenAddress, leftFee, // 是否减去 gasfee 和优先费
|
|
50
|
+
priorityFee, // 优先费
|
|
51
|
+
solBalance, // 余额
|
|
52
|
+
fromTransfer // 是否从归集页面调用
|
|
53
|
+
) => {
|
|
54
|
+
// try {
|
|
55
|
+
const { gasSettings: { priorityFee: systemPriorityFee }, rpcUrl, } = store.getState().settings;
|
|
56
|
+
// 如果是交易要减去两倍的优先费
|
|
57
|
+
const fee = (Number(priorityFee == undefined ? systemPriorityFee : priorityFee) *
|
|
58
|
+
(fromTransfer ? 1 : 2) *
|
|
59
|
+
LAMPORTS_PER_SOL +
|
|
60
|
+
5000) /
|
|
61
|
+
LAMPORTS_PER_SOL;
|
|
62
|
+
if (solBalance) {
|
|
63
|
+
return new BigNumber(solBalance).minus(new BigNumber(fee)).toNumber();
|
|
64
|
+
}
|
|
65
|
+
const connection = new Connection(rpcUrl, 'confirmed');
|
|
66
|
+
if (tokenAddress === NATIVE_MINT.toBase58() || tokenAddress === NATIVE_COIN) {
|
|
67
|
+
const balance = await getNativeBalance(connection, address);
|
|
68
|
+
if (leftFee) {
|
|
69
|
+
const amount = new BigNumber(balance).minus(new BigNumber(fee)).toNumber();
|
|
70
|
+
if (Number(amount) <= 0 || isNaN(Number(amount))) {
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
return amount;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return balance;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
return await getTokenAccountBalance(connection, tokenAddress, address);
|
|
81
|
+
}
|
|
82
|
+
// } catch (error) {
|
|
83
|
+
// console.log('error', error);
|
|
84
|
+
// return 0;
|
|
85
|
+
// }
|
|
86
|
+
};
|
|
87
|
+
export const getMultipleAccountBalanceLeftFee = async (wallets, tokenAddress, leftFee, priorityFee, solBalance, // 余额
|
|
88
|
+
fromTransfer // 是否从归集页面调用
|
|
89
|
+
) => {
|
|
90
|
+
const tokenAccountBalances = await Promise.all(wallets.map(wallet => getAccountBalanceLeftFee(wallet, tokenAddress, leftFee, priorityFee, solBalance, fromTransfer)));
|
|
91
|
+
return tokenAccountBalances;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* 获取CU和价格
|
|
95
|
+
* @param priorityFee 优先费(uiAmount)
|
|
96
|
+
* @param estimateCU 估计CU
|
|
97
|
+
* @returns { limitIx: TransactionInstruction; priceIx: TransactionInstruction }
|
|
98
|
+
*/
|
|
99
|
+
export const getCU = (priorityFee, estimateCU) => {
|
|
100
|
+
let cuLimit = estimateCU || 200_000;
|
|
101
|
+
const totalPriorityFeeSOL = priorityFee;
|
|
102
|
+
const totalPriorityFeeLamports = totalPriorityFeeSOL * LAMPORTS_PER_SOL;
|
|
103
|
+
const microLamports = Math.floor((totalPriorityFeeLamports / cuLimit) * 1_000_000);
|
|
104
|
+
const limitIx = ComputeBudgetProgram.setComputeUnitLimit({ units: cuLimit });
|
|
105
|
+
const priceIx = ComputeBudgetProgram.setComputeUnitPrice({ microLamports });
|
|
106
|
+
return { limitIx, priceIx };
|
|
107
|
+
};
|
|
108
|
+
export const getTransactionStatus = async (connection, txHash, attempts = 0, interval = 3000) => {
|
|
109
|
+
const signatureStatuses = await connection.getSignatureStatuses([txHash]);
|
|
110
|
+
const status = signatureStatuses.value[0];
|
|
111
|
+
if (status) {
|
|
112
|
+
if (status && status.err) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (status == null) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
await sleep(interval);
|
|
123
|
+
if (attempts < 5) {
|
|
124
|
+
return await getTransactionStatus(connection, txHash, attempts + 1, interval);
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sol-sdk/rpc/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PublicKey, Transaction, TransactionInstruction, Keypair } from '@solana/web3.js';
|
|
2
|
+
export declare const transferSOLInstruction: (from: PublicKey, to: PublicKey, amount: number) => TransactionInstruction;
|
|
3
|
+
export declare const transferSOL: (addresses: TransferSOLAddress[]) => TransactionInstruction[];
|
|
4
|
+
export declare const transferTokenInstruction: ({ from, to, amount, token, fromAta, toAta, decimals, }: {
|
|
5
|
+
from: PublicKey;
|
|
6
|
+
to: PublicKey;
|
|
7
|
+
amount: number;
|
|
8
|
+
token: string;
|
|
9
|
+
fromAta: PublicKey;
|
|
10
|
+
toAta: PublicKey;
|
|
11
|
+
decimals: number;
|
|
12
|
+
}) => Transaction[];
|
|
13
|
+
export declare const transferToken: (addresses: TransferTokenAddress[]) => Transaction[];
|
|
14
|
+
export declare const solToWsolInstruction: ({ from, fromAta, amount, }: {
|
|
15
|
+
from: PublicKey;
|
|
16
|
+
fromAta: PublicKey;
|
|
17
|
+
amount: number;
|
|
18
|
+
}) => TransactionInstruction[];
|
|
19
|
+
export declare const wsolToSolInstruction: ({ from, fromAta, }: {
|
|
20
|
+
from: PublicKey;
|
|
21
|
+
fromAta: PublicKey;
|
|
22
|
+
}) => TransactionInstruction[];
|
|
23
|
+
export declare const addCommission: (tx: Transaction, payer: Keypair, commissionWallet: string, commissionAmount: string) => void;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sol-sdk/transfer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,WAAW,EACX,sBAAsB,EACtB,OAAO,EAER,MAAM,iBAAiB,CAAC;AAazB,eAAO,MAAM,sBAAsB,GACjC,MAAM,SAAS,EACf,IAAI,SAAS,EACb,QAAQ,MAAM,KACb,sBAMF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,WAAW,kBAAkB,EAAE,KAAG,sBAAsB,EAInF,CAAC;AAGF,eAAO,MAAM,wBAAwB,GAAI,wDAQtC;IACD,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,KAAG,WAAW,EAsBd,CAAC;AAGF,eAAO,MAAM,aAAa,GAAI,WAAW,oBAAoB,EAAE,KAAG,WAAW,EAuB5E,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAAI,4BAIlC;IACD,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,KAAG,sBAAsB,EAWzB,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAAI,oBAGlC;IACD,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,SAAS,CAAC;CACpB,KAAG,sBAAsB,EAIzB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,IAAI,WAAW,EACf,OAAO,OAAO,EACd,kBAAkB,MAAM,EACxB,kBAAkB,MAAM,SAazB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { PublicKey, SystemProgram, Transaction, LAMPORTS_PER_SOL, } from '@solana/web3.js';
|
|
2
|
+
import { createAssociatedTokenAccountIdempotentInstruction, createTransferCheckedInstruction, createSyncNativeInstruction, createCloseAccountInstruction, getAssociatedTokenAddressSync, } from '@solana/spl-token';
|
|
3
|
+
import BigNumber from 'bignumber.js';
|
|
4
|
+
const MIN_COMMISSION_AMOUNT = new BigNumber(0.005).times(LAMPORTS_PER_SOL).toNumber();
|
|
5
|
+
// 转账 sol 指令
|
|
6
|
+
export const transferSOLInstruction = (from, to, amount) => {
|
|
7
|
+
return SystemProgram.transfer({
|
|
8
|
+
fromPubkey: from,
|
|
9
|
+
toPubkey: to,
|
|
10
|
+
lamports: amount,
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
export const transferSOL = (addresses) => {
|
|
14
|
+
return addresses.map(address => transferSOLInstruction(new PublicKey(address.from), new PublicKey(address.to), address.amount));
|
|
15
|
+
};
|
|
16
|
+
// 转账 token 指令
|
|
17
|
+
export const transferTokenInstruction = ({ from, to, amount, token, fromAta, toAta, decimals, }) => {
|
|
18
|
+
const tx = new Transaction();
|
|
19
|
+
tx.add(createAssociatedTokenAccountIdempotentInstruction(from, toAta, new PublicKey(to), new PublicKey(token)));
|
|
20
|
+
tx.add(createTransferCheckedInstruction(fromAta, new PublicKey(token), toAta, from, BigInt(amount), decimals, [from]));
|
|
21
|
+
return [tx];
|
|
22
|
+
};
|
|
23
|
+
// 批量转账 token 指令
|
|
24
|
+
export const transferToken = (addresses) => {
|
|
25
|
+
const alltxs = [];
|
|
26
|
+
addresses.forEach(address => {
|
|
27
|
+
const fromAta = getAssociatedTokenAddressSync(new PublicKey(address.token), new PublicKey(address.from));
|
|
28
|
+
const toAta = getAssociatedTokenAddressSync(new PublicKey(address.token), new PublicKey(address.to));
|
|
29
|
+
const txs = transferTokenInstruction({
|
|
30
|
+
from: new PublicKey(address.from),
|
|
31
|
+
to: new PublicKey(address.to),
|
|
32
|
+
fromAta: fromAta,
|
|
33
|
+
toAta: toAta,
|
|
34
|
+
amount: address.amount,
|
|
35
|
+
token: address.token,
|
|
36
|
+
decimals: address.decimals,
|
|
37
|
+
});
|
|
38
|
+
alltxs.push(...txs);
|
|
39
|
+
});
|
|
40
|
+
return alltxs;
|
|
41
|
+
};
|
|
42
|
+
// 转账 sol 到 wsol 指令
|
|
43
|
+
export const solToWsolInstruction = ({ from, fromAta, amount, }) => {
|
|
44
|
+
const txs = [];
|
|
45
|
+
txs.push(SystemProgram.transfer({
|
|
46
|
+
fromPubkey: from,
|
|
47
|
+
toPubkey: fromAta,
|
|
48
|
+
lamports: amount,
|
|
49
|
+
}), createSyncNativeInstruction(fromAta));
|
|
50
|
+
return txs;
|
|
51
|
+
};
|
|
52
|
+
// 转账 wsol 到 sol 指令
|
|
53
|
+
export const wsolToSolInstruction = ({ from, fromAta, }) => {
|
|
54
|
+
const txs = [];
|
|
55
|
+
txs.push(createCloseAccountInstruction(fromAta, from, from));
|
|
56
|
+
return txs;
|
|
57
|
+
};
|
|
58
|
+
export const addCommission = (tx, payer, commissionWallet, commissionAmount) => {
|
|
59
|
+
if (Number(commissionAmount) > 0) {
|
|
60
|
+
tx.add(transferSOLInstruction(payer.publicKey, new PublicKey(commissionWallet), new BigNumber(commissionAmount).gt(MIN_COMMISSION_AMOUNT)
|
|
61
|
+
? new BigNumber(commissionAmount).toNumber()
|
|
62
|
+
: MIN_COMMISSION_AMOUNT));
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sol-sdk/transfer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Connection } from '@solana/web3.js';
|
|
2
|
+
import { AmmV4Keys, CpmmKeys } from '@raydium-io/raydium-sdk-v2';
|
|
3
|
+
export interface TurnoverTradeParams {
|
|
4
|
+
connection: Connection;
|
|
5
|
+
fromWallet: string;
|
|
6
|
+
toWallet: string;
|
|
7
|
+
tokenAddress: string;
|
|
8
|
+
tokenAmount: number;
|
|
9
|
+
decimals: number;
|
|
10
|
+
exchangeName: string;
|
|
11
|
+
poolInfo: {
|
|
12
|
+
exchange: {
|
|
13
|
+
name: string;
|
|
14
|
+
};
|
|
15
|
+
pairAddress: string;
|
|
16
|
+
tokenA?: string;
|
|
17
|
+
tokenB?: string;
|
|
18
|
+
};
|
|
19
|
+
priceInSol: number;
|
|
20
|
+
creatorAddress: string;
|
|
21
|
+
priorityFee: number;
|
|
22
|
+
slippage?: number;
|
|
23
|
+
tipAddress: string;
|
|
24
|
+
commissionAmount: number;
|
|
25
|
+
pumpfunReverseInfo?: PumpfunReverseInfo;
|
|
26
|
+
ammReverseInfo?: AmmReverseInfo;
|
|
27
|
+
raydiumV4Keys?: AmmV4Keys;
|
|
28
|
+
raydiumCpmmKeys?: CpmmKeys;
|
|
29
|
+
pumpswapReverseInfo?: AmmReverseInfo;
|
|
30
|
+
launchlabReverseInfo?: LaunchlabReverseInfo;
|
|
31
|
+
meteoraDLMMReverseInfo?: MeteoraDLMMReverseInfo;
|
|
32
|
+
}
|
|
33
|
+
export interface TurnoverTradeResult {
|
|
34
|
+
success: boolean;
|
|
35
|
+
bundleId?: string;
|
|
36
|
+
buyTxHash?: string;
|
|
37
|
+
sellTxHash?: string;
|
|
38
|
+
error?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface BatchTurnoverParams {
|
|
41
|
+
connection: Connection;
|
|
42
|
+
turnoverItems: {
|
|
43
|
+
fromWallet: string;
|
|
44
|
+
toWallet: string;
|
|
45
|
+
tokenAmount: number;
|
|
46
|
+
}[];
|
|
47
|
+
tokenAddress: string;
|
|
48
|
+
decimals: number;
|
|
49
|
+
exchangeName: string;
|
|
50
|
+
poolInfo: {
|
|
51
|
+
exchange: {
|
|
52
|
+
name: string;
|
|
53
|
+
};
|
|
54
|
+
pairAddress: string;
|
|
55
|
+
tokenA?: string;
|
|
56
|
+
tokenB?: string;
|
|
57
|
+
};
|
|
58
|
+
priceInSol: number;
|
|
59
|
+
creatorAddress: string;
|
|
60
|
+
priorityFee: number;
|
|
61
|
+
slippage?: number;
|
|
62
|
+
tipAddress: string;
|
|
63
|
+
commissionAmount: number;
|
|
64
|
+
intervalMs?: number;
|
|
65
|
+
pumpfunReverseInfo?: PumpfunReverseInfo;
|
|
66
|
+
ammReverseInfo?: AmmReverseInfo;
|
|
67
|
+
raydiumV4Keys?: AmmV4Keys;
|
|
68
|
+
raydiumCpmmKeys?: CpmmKeys;
|
|
69
|
+
launchlabReverseInfo?: LaunchlabReverseInfo;
|
|
70
|
+
meteoraDLMMReverseInfo?: MeteoraDLMMReverseInfo;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 执行单次换手交易(买入+卖出的捆绑交易)
|
|
74
|
+
*/
|
|
75
|
+
export declare const executeSingleTurnover: (params: TurnoverTradeParams) => Promise<TurnoverTradeResult>;
|
|
76
|
+
/**
|
|
77
|
+
* 执行批量换手交易
|
|
78
|
+
*/
|
|
79
|
+
export declare const executeBatchTurnover: (params: BatchTurnoverParams) => Promise<TurnoverTradeResult[]>;
|
|
80
|
+
/**
|
|
81
|
+
* 计算换手交易的SOL转账数量
|
|
82
|
+
*/
|
|
83
|
+
export declare const calculateTurnoverProfit: (tokenAmount: number, priceInSol: number, slippage?: number, fees?: number) => number;
|
|
84
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sol-sdk/turnover/index.ts"],"names":[],"mappings":"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"}
|